<!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>[215164] trunk</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/215164">215164</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2017-04-09 11:49:22 -0700 (Sun, 09 Apr 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Resync WPT tests up to 23cd07d4685d81024b7440e042f8bbdb33e7ddec
https://bugs.webkit.org/show_bug.cgi?id=170647

Patch by Youenn Fablet &lt;youenn@apple.com&gt; on 2017-04-09
Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Removing CSS import repository as it is merged into WPT.

* resources/TestRepositories:
* resources/import-expectations.json:
* resources/resource-files.json:
* web-platform-tests/%CERTS_DIR%/FEFE.pem: Added.
* web-platform-tests/%CERTS_DIR%/FEFF.pem: Added.
* web-platform-tests/%CERTS_DIR%/cacert.pem: Added.
* web-platform-tests/%CERTS_DIR%/cakey.pem: Added.
* web-platform-tests/%CERTS_DIR%/index.txt: Added.
* web-platform-tests/%CERTS_DIR%/index.txt.attr: Added.
* web-platform-tests/%CERTS_DIR%/index.txt.attr.old: Added.
* web-platform-tests/%CERTS_DIR%/index.txt.old: Added.
* web-platform-tests/%CERTS_DIR%/localhost.key: Added.
* web-platform-tests/%CERTS_DIR%/localhost.pem: Added.
* web-platform-tests/%CERTS_DIR%/serial: Added.
* web-platform-tests/%CERTS_DIR%/serial.old: Added.
* web-platform-tests/%CERTS_DIR%/w3c-import.log: Added.
* web-platform-tests/CONTRIBUTING.md:
* web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm:
* web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm:
* web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt:
* web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html:
* web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm:
* web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt: Added.
* web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm: Added.
* web-platform-tests/IndexedDB/idbobjectstore_deleted.htm:
* web-platform-tests/IndexedDB/interleaved-cursors-expected.txt: Added.
* web-platform-tests/IndexedDB/interleaved-cursors.html: Added.
* web-platform-tests/IndexedDB/parallel-cursors-upgrade-expected.txt: Added.
* web-platform-tests/IndexedDB/parallel-cursors-upgrade.html: Added.
* web-platform-tests/IndexedDB/support-promises.js:
(migrateNamedDatabase):
(createNamedDatabase):
(openNamedDatabase):
* web-platform-tests/IndexedDB/w3c-import.log:
* web-platform-tests/LICENSE.md:
* web-platform-tests/README.md:
* web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html:
* web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm:
* web-platform-tests/XMLHttpRequest/resources/auth2/corsenabled.py:
(main):
* web-platform-tests/XMLHttpRequest/resources/conditional.py:
(main):
* web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt:
* web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm:
* web-platform-tests/XMLHttpRequest/send-conditional-cors-expected.txt: Added.
* web-platform-tests/XMLHttpRequest/send-conditional-cors.htm: Added.
* web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus-expected.txt:
* web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus.htm:
* web-platform-tests/XMLHttpRequest/send-non-same-origin-expected.txt:
* web-platform-tests/XMLHttpRequest/send-non-same-origin.htm:
* web-platform-tests/XMLHttpRequest/send-usp.any-expected.txt: Added.
* web-platform-tests/XMLHttpRequest/send-usp.any.html: Added.
* web-platform-tests/XMLHttpRequest/send-usp.any.js: Added.
(encode):
(x.onload.overall_test.step_func):
* web-platform-tests/XMLHttpRequest/w3c-import.log:
* web-platform-tests/background-fetch/OWNERS: Added.
* web-platform-tests/background-fetch/interfaces-expected.txt: Added.
* web-platform-tests/background-fetch/interfaces-worker.https-expected.txt: Added.
* web-platform-tests/background-fetch/interfaces-worker.https.html: Added.
* web-platform-tests/background-fetch/interfaces.html: Added.
* web-platform-tests/background-fetch/interfaces.idl: Added.
* web-platform-tests/background-fetch/interfaces.worker-expected.txt: Added.
* web-platform-tests/background-fetch/interfaces.worker.html: Added.
* web-platform-tests/background-fetch/interfaces.worker.js: Added.
(promise_test):
* web-platform-tests/background-fetch/w3c-import.log: Added.
* web-platform-tests/beacon/headers/header-referrer-no-referrer-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html: Added.
* web-platform-tests/beacon/headers/header-referrer-no-referrer.html: Added.
* web-platform-tests/beacon/headers/header-referrer-origin-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html: Added.
* web-platform-tests/beacon/headers/header-referrer-origin.html: Added.
* web-platform-tests/beacon/headers/header-referrer-same-origin-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-same-origin.html: Added.
* web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html: Added.
* web-platform-tests/beacon/headers/header-referrer-strict-origin.https-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html: Added.
* web-platform-tests/beacon/headers/header-referrer-unsafe-url.https-expected.txt: Added.
* web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html: Added.
* web-platform-tests/beacon/headers/header-referrer.js: Added.
(testReferrerHeader):
(return.new.Promise.):
(return.new.Promise):
* web-platform-tests/beacon/headers/w3c-import.log: Added.
* web-platform-tests/beacon/resources/inspect-header.py: Added.
(main):
* web-platform-tests/beacon/resources/w3c-import.log: Added.
* web-platform-tests/check_stability.py:
(get_git_cmd.git):
(fetch_wpt):
(get_branch_point):
(get_files_changed):
(process_results):
(markdown_adjust):
(get_parser):
(main):
* web-platform-tests/ci_lint.sh:
* web-platform-tests/cors/allow-headers-expected.txt:
* web-platform-tests/cors/allow-headers.htm:
* web-platform-tests/cors/origin-expected.txt:
* web-platform-tests/cors/origin.htm:
* web-platform-tests/cors/preflight-failure.htm:
* web-platform-tests/cors/redirect-userinfo-expected.txt:
* web-platform-tests/cors/redirect-userinfo.htm:
* web-platform-tests/cors/request-headers.htm:
* web-platform-tests/css-timing-1/OWNERS: Added.
* web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt: Added.
* web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html: Added.
* web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt: Added.
* web-platform-tests/css-timing-1/frames-timing-functions-output.html: Added.
* web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt: Added.
* web-platform-tests/css-timing-1/frames-timing-functions-syntax.html: Added.
* web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt: Added.
* web-platform-tests/css-timing-1/step-timing-functions-output.html: Added.
* web-platform-tests/css-timing-1/testcommon.js: Added.
(createDiv):
(createElement):
(pxToNum):
(xForT):
(yForT):
(tForX):
(return.bezierClosure):
(cubicBezier):
* web-platform-tests/css-timing-1/w3c-import.log: Added.
* web-platform-tests/css/.htaccess: Added.
* web-platform-tests/css/OWNERS: Added.
* web-platform-tests/css/README.md: Added.
* web-platform-tests/css/build-css-testsuites.sh: Added.
* web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-areas-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-columns-rows-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-named-grid-lines-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-repeat-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-areas-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-columns-rows-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-support-named-grid-lines-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-support-repeat-001.xht:
* web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.xht:
* web-platform-tests/css/css-grid-1/grid-items/w3c-import.log:
* web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht:
* web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht:
* web-platform-tests/css/css-grid-1/grid-model/w3c-import.log:
* web-platform-tests/css/requirements.txt: Added.
* web-platform-tests/css/w3c-import.log: Added.
* web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt:
* web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt:
* web-platform-tests/dom/lists/DOMTokenList-iteration.html:
* web-platform-tests/dom/lists/README.md: Added.
* web-platform-tests/dom/lists/w3c-import.log:
* web-platform-tests/dom/nodes/Document-createEvent-expected.txt:
* web-platform-tests/dom/nodes/Document-createEvent.html:
* web-platform-tests/dom/nodes/Document-createEvent.js:
* web-platform-tests/encrypted-media/content/content-metadata.js:
* web-platform-tests/encrypted-media/content/w3c-import.log:
* web-platform-tests/fetch/OWNERS:
* web-platform-tests/fetch/api/basic/accept-header-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/accept-header-worker.html: Removed.
* web-platform-tests/fetch/api/basic/accept-header.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/accept-header.any.html: Added.
* web-platform-tests/fetch/api/basic/accept-header.any.js: Added.
(promise_test):
* web-platform-tests/fetch/api/basic/accept-header.html: Removed.
* web-platform-tests/fetch/api/basic/accept-header.js: Removed.
* web-platform-tests/fetch/api/basic/accept-header.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/accept-header.worker.html: Added.
* web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/mode-same-origin-worker.html: Removed.
* web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/mode-same-origin.any.html: Added.
* web-platform-tests/fetch/api/basic/mode-same-origin.any.js: Added.
* web-platform-tests/fetch/api/basic/mode-same-origin.html: Removed.
* web-platform-tests/fetch/api/basic/mode-same-origin.js: Removed.
* web-platform-tests/fetch/api/basic/mode-same-origin.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/mode-same-origin.worker.html: Added.
* web-platform-tests/fetch/api/basic/referrer-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/referrer-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/referrer-worker.html: Removed.
* web-platform-tests/fetch/api/basic/referrer.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/referrer.any.html: Added.
* web-platform-tests/fetch/api/basic/referrer.any.js: Added.
* web-platform-tests/fetch/api/basic/referrer.html: Removed.
* web-platform-tests/fetch/api/basic/referrer.js: Removed.
* web-platform-tests/fetch/api/basic/referrer.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/referrer.worker.html: Added.
* web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html: Removed.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.any.html: Added.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js: Added.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.html: Removed.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.js: Removed.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-forbidden-headers.worker.html: Added.
* web-platform-tests/fetch/api/basic/request-head-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-head-worker.html: Removed.
* web-platform-tests/fetch/api/basic/request-head.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-expected.txt.
* web-platform-tests/fetch/api/basic/request-head.any.html: Added.
* web-platform-tests/fetch/api/basic/request-head.any.js: Added.
(promise_test):
* web-platform-tests/fetch/api/basic/request-head.html: Removed.
* web-platform-tests/fetch/api/basic/request-head.js: Removed.
* web-platform-tests/fetch/api/basic/request-head.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-head.worker.html: Added.
* web-platform-tests/fetch/api/basic/request-headers-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-headers-worker.html: Removed.
* web-platform-tests/fetch/api/basic/request-headers.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-headers.any.html: Added.
* web-platform-tests/fetch/api/basic/request-headers.any.js: Added.
* web-platform-tests/fetch/api/basic/request-headers.html: Removed.
* web-platform-tests/fetch/api/basic/request-headers.js: Removed.
* web-platform-tests/fetch/api/basic/request-headers.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-headers.worker.html: Added.
* web-platform-tests/fetch/api/basic/request-referrer-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-referrer-redirected-worker-expected.txt:
* web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html:
* web-platform-tests/fetch/api/basic/request-referrer-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-referrer-worker.html: Removed.
* web-platform-tests/fetch/api/basic/request-referrer.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-referrer.any.html: Added.
* web-platform-tests/fetch/api/basic/request-referrer.any.js: Added.
* web-platform-tests/fetch/api/basic/request-referrer.html: Removed.
* web-platform-tests/fetch/api/basic/request-referrer.js: Removed.
* web-platform-tests/fetch/api/basic/request-referrer.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-referrer.worker.html: Added.
* web-platform-tests/fetch/api/basic/request-upload-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/request-upload-worker.html: Removed.
* web-platform-tests/fetch/api/basic/request-upload.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-upload.any.html: Added.
* web-platform-tests/fetch/api/basic/request-upload.any.js: Added.
* web-platform-tests/fetch/api/basic/request-upload.html: Removed.
* web-platform-tests/fetch/api/basic/request-upload.js: Removed.
* web-platform-tests/fetch/api/basic/request-upload.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/request-upload.worker.html: Added.
* web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/scheme-about-worker.html: Removed.
* web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt.
* web-platform-tests/fetch/api/basic/scheme-about.any.html: Added.
* web-platform-tests/fetch/api/basic/scheme-about.any.js: Added.
* web-platform-tests/fetch/api/basic/scheme-about.html: Removed.
* web-platform-tests/fetch/api/basic/scheme-about.js: Removed.
* web-platform-tests/fetch/api/basic/scheme-about.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/scheme-about.worker.html: Added.
* web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/scheme-data-worker.html: Removed.
* web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-expected.txt.
* web-platform-tests/fetch/api/basic/scheme-data.any.html: Added.
* web-platform-tests/fetch/api/basic/scheme-data.any.js: Added.
* web-platform-tests/fetch/api/basic/scheme-data.html: Removed.
* web-platform-tests/fetch/api/basic/scheme-data.js: Removed.
* web-platform-tests/fetch/api/basic/scheme-data.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/scheme-data.worker.html: Added.
* web-platform-tests/fetch/api/basic/stream-response-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/basic/stream-response-worker.html: Removed.
* web-platform-tests/fetch/api/basic/stream-response.any-expected.txt: Added.
* web-platform-tests/fetch/api/basic/stream-response.any.html: Added.
* web-platform-tests/fetch/api/basic/stream-response.any.js: Added.
(promise_test):
* web-platform-tests/fetch/api/basic/stream-response.html: Removed.
* web-platform-tests/fetch/api/basic/stream-response.js: Removed.
* web-platform-tests/fetch/api/basic/stream-response.worker-expected.txt: Added.
* web-platform-tests/fetch/api/basic/stream-response.worker.html: Added.
* web-platform-tests/fetch/api/basic/w3c-import.log:
* web-platform-tests/fetch/api/cors/cors-basic-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-basic-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-basic.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-basic.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-basic.html: Removed.
* web-platform-tests/fetch/api/cors/cors-basic.js: Removed.
* web-platform-tests/fetch/api/cors/cors-basic.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-basic.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-cookies-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-cookies-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-cookies.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-cookies.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-cookies.html: Removed.
* web-platform-tests/fetch/api/cors/cors-cookies.js: Removed.
* web-platform-tests/fetch/api/cors/cors-cookies.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-cookies.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-filtering-expected.txt:
* web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt:
* web-platform-tests/fetch/api/cors/cors-filtering.js:
(corsExposeFilter):
* web-platform-tests/fetch/api/cors/cors-no-preflight-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-no-preflight-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-no-preflight.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-no-preflight.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-no-preflight.html: Removed.
* web-platform-tests/fetch/api/cors/cors-no-preflight.js: Removed.
* web-platform-tests/fetch/api/cors/cors-no-preflight.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-no-preflight.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-origin-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-origin-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-origin.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-origin.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-origin.html: Removed.
* web-platform-tests/fetch/api/cors/cors-origin.js: Removed.
* web-platform-tests/fetch/api/cors/cors-origin.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-origin.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.js: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.js: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-star-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-star-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-star.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-star.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-star.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-star.js: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-star.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-star.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-status-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-status-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-status.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-status.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-status.any.js: Added.
(corsPreflightStatus):
* web-platform-tests/fetch/api/cors/cors-preflight-status.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-status.js: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-status.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-status.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-preflight.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-preflight.html: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight.js: Removed.
* web-platform-tests/fetch/api/cors/cors-preflight.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-preflight.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.html: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.js: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.html: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.js: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker.html: Added.
* web-platform-tests/fetch/api/cors/cors-redirect-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect-worker.html: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect.any-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-redirect.any.html: Added.
* web-platform-tests/fetch/api/cors/cors-redirect.any.js: Added.
* web-platform-tests/fetch/api/cors/cors-redirect.html: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect.js: Removed.
* web-platform-tests/fetch/api/cors/cors-redirect.worker-expected.txt: Added.
* web-platform-tests/fetch/api/cors/cors-redirect.worker.html: Added.
* web-platform-tests/fetch/api/cors/w3c-import.log:
* web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt: Removed.
* web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/credentials/authentication-basic-worker.html: Removed.
* web-platform-tests/fetch/api/credentials/authentication-basic.any-expected.txt: Added.
* web-platform-tests/fetch/api/credentials/authentication-basic.any.html: Added.
* web-platform-tests/fetch/api/credentials/authentication-basic.any.js: Added.
* web-platform-tests/fetch/api/credentials/authentication-basic.html: Removed.
* web-platform-tests/fetch/api/credentials/authentication-basic.js: Removed.
* web-platform-tests/fetch/api/credentials/authentication-basic.worker-expected.txt: Added.
* web-platform-tests/fetch/api/credentials/authentication-basic.worker.html: Added.
* web-platform-tests/fetch/api/credentials/cookies-expected.txt: Removed.
* web-platform-tests/fetch/api/credentials/cookies-worker-expected.txt: Removed.
* web-platform-tests/fetch/api/credentials/cookies-worker.html: Removed.
* web-platform-tests/fetch/api/credentials/cookies.any-expected.txt: Added.
* web-platform-tests/fetch/api/credentials/cookies.any.html: Added.
* web-platform-tests/fetch/api/credentials/cookies.any.js: Added.
* web-platform-tests/fetch/api/credentials/cookies.html: Removed.
* web-platform-tests/fetch/api/credentials/cookies.js: Removed.
* web-platform-tests/fetch/api/credentials/cookies.worker-expected.txt: Added.
* web-platform-tests/fetch/api/credentials/cookies.worker.html: Added.
* web-platform-tests/fetch/api/credentials/w3c-import.log:
* web-platform-tests/fetch/api/headers/headers-idl-expected.txt:
* web-platform-tests/fetch/api/headers/historical.any-expected.txt: Added.
* web-platform-tests/fetch/api/headers/historical.any.html: Added.
* web-platform-tests/fetch/api/headers/historical.any.js: Added.
(test):
* web-platform-tests/fetch/api/headers/historical.worker-expected.txt: Added.
* web-platform-tests/fetch/api/headers/historical.worker.html: Added.
* web-platform-tests/fetch/api/headers/w3c-import.log:
* web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-count-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
* web-platform-tests/fetch/api/redirect/redirect-location-worker-expected.txt:
* web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt: Removed.
* web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt:
* web-platform-tests/fetch/api/request/request-init-003.sub.html:
* web-platform-tests/fetch/api/resources/redirect-count.py: Removed.
* web-platform-tests/fetch/http-cache/304-update-expected.txt: Added.
* web-platform-tests/fetch/http-cache/304-update.html: Added.
* web-platform-tests/fetch/http-cache/README.md: Added.
* web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.
* web-platform-tests/fetch/http-cache/cc-request.html: Added.
* web-platform-tests/fetch/http-cache/freshness-expected.txt: Added.
* web-platform-tests/fetch/http-cache/freshness.html: Added.
* web-platform-tests/fetch/http-cache/heuristic-expected.txt: Added.
* web-platform-tests/fetch/http-cache/heuristic.html: Added.
* web-platform-tests/fetch/http-cache/http-cache.js: Added.
(make_url):
(server_state):
(make_test.fetch_functions.push.):
(make_test.fetch_functions.push):
(make_test.):
(make_test.run_next_step):
(make_test):
(http_date):
* web-platform-tests/fetch/http-cache/invalidate-expected.txt: Added.
* web-platform-tests/fetch/http-cache/invalidate.html: Added.
* web-platform-tests/fetch/http-cache/partial-expected.txt: Added.
* web-platform-tests/fetch/http-cache/partial.html: Added.
* web-platform-tests/fetch/http-cache/resources/http-cache.py: Added.
(main):
* web-platform-tests/fetch/http-cache/resources/w3c-import.log: Added.
* web-platform-tests/fetch/http-cache/status-expected.txt: Added.
* web-platform-tests/fetch/http-cache/status.html: Added.
* web-platform-tests/fetch/http-cache/vary-expected.txt: Added.
* web-platform-tests/fetch/http-cache/vary.html: Added.
* web-platform-tests/fetch/http-cache/w3c-import.log: Added.
* web-platform-tests/fetch/nosniff/importscripts-expected.txt: Removed.
* web-platform-tests/hr-time/basic.any-expected.txt: Added.
* web-platform-tests/hr-time/basic.any.html: Added.
* web-platform-tests/hr-time/basic.any.js: Added.
(test):
(async_test):
* web-platform-tests/hr-time/monotonic-clock.any-expected.txt: Added.
* web-platform-tests/hr-time/monotonic-clock.any.html: Added.
* web-platform-tests/hr-time/monotonic-clock.any.js: Added.
(test):
* web-platform-tests/hr-time/monotonic-clock.worker-expected.txt: Added.
* web-platform-tests/hr-time/monotonic-clock.worker.html: Added.
* web-platform-tests/hr-time/w3c-import.log:
* web-platform-tests/html/OWNERS:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt:
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html:
* web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub-expected.txt: Added.
* web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html: Added.
* web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
* web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt: Added.
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html: Added.
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html: Added.
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log: Added.
* web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log:
* web-platform-tests/html/browsers/the-windowproxy-exotic-object/w3c-import.log:
* web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub-expected.txt:
* web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html: Added.
* web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html:
* web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html:
* web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html:
* web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html:
* web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html:
* web-platform-tests/html/browsers/windows/browsing-context-expected.txt:
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001-expected.txt: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html: Added.
* web-platform-tests/html/browsers/windows/browsing-context-names/resources/w3c-import.log:
* web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log:
* web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html: Added.
* web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html: Added.
* web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt: Added.
* web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html: Added.
* web-platform-tests/html/browsers/windows/resources/w3c-import.log:
* web-platform-tests/html/browsers/windows/w3c-import.log:
* web-platform-tests/html/dom/OWNERS: Added.
* web-platform-tests/html/dom/w3c-import.log:
* web-platform-tests/html/resources/common.js:
(newIFrame):
* web-platform-tests/html/semantics/OWNERS: Added.
* web-platform-tests/html/semantics/embedded-content/the-canvas-element/w3c-import.log:
* web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt: Added.
* web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html: Added.
* web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt: Added.
* web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html: Added.
* web-platform-tests/html/semantics/forms/textfieldselection/selection.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/textfieldselection/w3c-import.log:
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt: Added.
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html: Added.
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html: Added.
* web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
* web-platform-tests/html/semantics/w3c-import.log:
* web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html:
* web-platform-tests/html/webappapis/timers/negative-setinterval-expected.txt: Added.
* web-platform-tests/html/webappapis/timers/negative-setinterval.html: Added.
* web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt: Added.
* web-platform-tests/html/webappapis/timers/negative-settimeout.html: Added.
* web-platform-tests/html/webappapis/timers/type-long-setinterval-expected.txt: Added.
* web-platform-tests/html/webappapis/timers/type-long-setinterval.html: Added.
* web-platform-tests/html/webappapis/timers/type-long-settimeout-expected.txt: Added.
* web-platform-tests/html/webappapis/timers/type-long-settimeout.html: Added.
* web-platform-tests/html/webappapis/timers/w3c-import.log:
* web-platform-tests/images/pattern.ogv: Added.
* web-platform-tests/images/pattern.png: Added.
* web-platform-tests/images/w3c-import.log:
* web-platform-tests/innerText/setter-expected.txt:
* web-platform-tests/innerText/setter-tests.js:
* web-platform-tests/innerText/setter.html:
* web-platform-tests/lint.whitelist:
* web-platform-tests/mediacapture-fromelement/idlharness-expected.txt: Added.
* web-platform-tests/mediacapture-fromelement/idlharness.html: Added.
* web-platform-tests/mediacapture-fromelement/w3c-import.log: Added.
* web-platform-tests/resource-timing/SyntheticResponse.py:
(main):
* web-platform-tests/resource-timing/resource-timing.js:
* web-platform-tests/resource-timing/resource_connection_reuse.html:
* web-platform-tests/resources/.htaccess: Added.
* web-platform-tests/resources/docs/api.md: Added.
* web-platform-tests/resources/docs/idlharness.md: Added.
* web-platform-tests/resources/docs/w3c-import.log: Added.
* web-platform-tests/resources/examples/apisample-error-worker.js: Added.
* web-platform-tests/resources/examples/apisample-worker.js: Added.
(test):
(async_test):
* web-platform-tests/resources/examples/apisample.htm: Added.
* web-platform-tests/resources/examples/apisample10.html: Added.
* web-platform-tests/resources/examples/apisample11.html: Added.
* web-platform-tests/resources/examples/apisample12.html: Added.
* web-platform-tests/resources/examples/apisample13.html: Added.
* web-platform-tests/resources/examples/apisample14.html: Added.
* web-platform-tests/resources/examples/apisample15.html: Added.
* web-platform-tests/resources/examples/apisample16.html: Added.
* web-platform-tests/resources/examples/apisample17.html: Added.
* web-platform-tests/resources/examples/apisample2.htm: Added.
* web-platform-tests/resources/examples/apisample3.htm: Added.
* web-platform-tests/resources/examples/apisample4.htm: Added.
* web-platform-tests/resources/examples/apisample5.htm: Added.
* web-platform-tests/resources/examples/apisample6.html: Added.
* web-platform-tests/resources/examples/apisample7.html: Added.
* web-platform-tests/resources/examples/apisample8.html: Added.
* web-platform-tests/resources/examples/apisample9.html: Added.
* web-platform-tests/resources/examples/w3c-import.log: Added.
* web-platform-tests/resources/idlharness.js:
(IdlInterface.prototype.test_member_iterable):
* web-platform-tests/resources/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/coverage.html: Added.
* web-platform-tests/resources/webidl2/index.js: Added.
* web-platform-tests/resources/webidl2/lib/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/package.json: Added.
* web-platform-tests/resources/webidl2/test/invalid.js: Added.
(idls.fs.readdirSync.dir.filter):
(map):
(errors.idls.map):
(i.func):
* web-platform-tests/resources/webidl2/test/invalid/idl/dict-required-default.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/module.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl: Added.
* web-platform-tests/resources/webidl2/test/invalid/idl/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/dict-required-default.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/enum.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/module.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/raises.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json: Added.
* web-platform-tests/resources/webidl2/test/invalid/json/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/mocha.opts: Added.
* web-platform-tests/resources/webidl2/test/syntax.js: Added.
(idls.fs.readdirSync.dir.filter):
(map):
(jsons.idls.map):
(i.func):
* web-platform-tests/resources/webidl2/test/syntax/idl/allowany.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/array.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/map.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/static.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl: Added.
* web-platform-tests/resources/webidl2/test/syntax/idl/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/allowany.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/array.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/attributes.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/callback.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/caller.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/constants.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/constructor.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/documentation.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/enum.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/exception.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/generic.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/implements.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/iterable.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/iterator.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/map.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/maplike.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/nullable.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/overloading.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/primitives.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/sequence.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/serializer.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/setlike.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/static.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/typedef.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/json/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/syntax/opt/typedef-nested.json: Added.
* web-platform-tests/resources/webidl2/test/syntax/opt/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/web/make-web-tests.js: Added.
(dir):
(allFromDir):
* web-platform-tests/resources/webidl2/test/web/run-tests.js: Added.
(i.func):
* web-platform-tests/resources/webidl2/test/web/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/LICENSE: Added.
* web-platform-tests/resources/webidl2/test/widlproc/Makefile: Added.
* web-platform-tests/resources/webidl2/test/widlproc/README.md: Added.
* web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/doc/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/Makefile: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/README: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css: Added.
(body):
(:link):
(:visited):
(a:active):
(a:link img, a:visited img):
(h1, h2, h3, h4, h5, h6):
(h1, h2, h3):
(h1):
(h2):
(h3):
(h4):
(h5):
(h6):
(.hide):
(code):
(ul.toc, ol.toc, ul.authors):
(div.head):
(div.head h1):
(div.head table):
(div.constraint, div.issue, div.note, div.notice):
(div.exampleInner pre):
(div.exampleOuter):
(div.exampleInner):
(div.exampleWrapper):
(div.exampleHeader):
(div.term):
(div.list):
(.optional):
(.copyright,.legalnotice):
(.copyright small):
(@media screen):
(a[href]:hover):
(ol.enumar):
(ol.enumla):
(ol.enumlr):
(ol.enumua):
(ol.enumur):
(.toc):
(pre):
(.examplecode):
(.def-api-feature-set dt, .def-api-feature dt, dt .def-device-cap, dt.const code):
(dt.attribute code, dt.method code):
(.def-device-caps dd):
(dt.method):
(.summary td):
* web-platform-tests/resources/webidl2/test/widlproc/src/comment.c: Added.
(setcommentnode):
(joininlinecomments):
(outputchildren):
(default_askend):
(root_askend):
(root_output):
(endspecificcnode):
(startcnode):
(para_output):
(para_end):
(return_output):
(author_output):
(code_end):
(code_output):
(text_end):
(text_output):
(html_output):
(param_output):
(api_feature_output):
(def_api_feature_askend):
(def_api_feature_output):
(def_api_feature_set_output):
(def_instantiated_output):
(def_device_cap_output):
(iswhitespace):
(parseword):
(dox_b):
(dox_n):
(dox_code):
(dox_endcode):
(dox_param):
(dox_para):
(dox_throw):
(dox_attr):
(parsecomment):
(parsecomments):
(attachcommenttonode):
(attachcomments):
(processcomments):
(outputdescriptive):
* web-platform-tests/resources/webidl2/test/widlproc/src/comment.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/entities.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/lex.c: Added.
(readinput):
(lexerrorexit):
(lexblockcomment):
(lexinlinecomment):
(lexnumber):
(lexstring):
(lexidentifier):
(lex):
(outputwidl):
* web-platform-tests/resources/webidl2/test/widlproc/src/lex.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/main.c: Added.
(options):
(main):
* web-platform-tests/resources/webidl2/test/widlproc/src/misc.c: Added.
(memalloc):
(memrealloc):
(memfree):
(memprintf):
(vmemprintf):
(vlocerrorexit):
(locerrorexit):
(errorexit):
* web-platform-tests/resources/webidl2/test/widlproc/src/misc.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/node.c: Added.
(newelement):
(newattr):
(newattrlist):
(addnode):
(reversechildren):
(nodeisempty):
(nodewalk):
(findchildelement):
(getattr):
(findchildelementwithnameattr):
(findreturntype):
(findparamidentifier):
(findthrowidentifier):
(outputid):
(outputnode):
* web-platform-tests/resources/webidl2/test/widlproc/src/node.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/os.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/parse.c: Added.
(tokerrorexit):
(lexnocomment):
(eat):
(setid):
(setidentifier):
(setargumentname):
(parsescopedname):
(parsescopednamelist):
(parsereturntype):
(parseunsignedintegertype):
(parsetypesuffix):
(parsetypesuffixstartingwitharray):
(parseprimitiveorstringtype):
(parsenonanytype):
(parseunionmembertype):
(parseuniontype):
(parsetype):
(parseextendedattribute):
(parseextendedattributelist):
(parseexceptionfield):
(parseargument):
(parseargumentlist):
(parseoperationrest):
(parsereturntypeandoperationrest):
(parseoptionaliteratorinterface):
(parseoperationoriteratorrest):
(parseattribute):
(parseserializer):
(parseattributeoroperationoriterator):
(parseconstexpr):
(parsedefaultvalue):
(parsedictionarymember):
(parseconst):
(parseimplementsstatement):
(parsetypedef):
(parseexception):
(parseinterface):
(parsecallback):
(parsedictionary):
(parseenum):
(parsedefinitions):
(parse):
* web-platform-tests/resources/webidl2/test/widlproc/src/parse.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/process.c: Added.
(outputnodeastext):
(printfqid):
(output):
(outputchildren):
(processfiles):
* web-platform-tests/resources/webidl2/test/widlproc/src/process.h: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/Makefile: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/enum.txt: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/test/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/test/widlproc/w3c-import.log: Added.
* web-platform-tests/resources/webidl2/w3c-import.log: Added.
* web-platform-tests/resources/webiwarning: inexact rename detection was skipped due to too many files.: Added.
* web-platform-tests/streams/piping/close-propagation-forward-expected.txt:
* web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt:
* web-platform-tests/streams/piping/close-propagation-forward.js:
(promise_test):
* web-platform-tests/streams/piping/flow-control-expected.txt:
* web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt:
* web-platform-tests/streams/piping/flow-control.js:
(promise_test):
* web-platform-tests/streams/piping/multiple-propagation-expected.txt:
* web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt:
* web-platform-tests/streams/piping/multiple-propagation.js:
(promise_test.t.string_appeared_here.then):
(promise_test.t.const.rs.recordingReadableStream.start):
(promise_test.t.return.flushAsyncEvents.then):
* web-platform-tests/streams/piping/pipe-through-expected.txt:
* web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt:
* web-platform-tests/streams/piping/pipe-through.js:
(promise_test):
* web-platform-tests/streams/readable-byte-streams/general-expected.txt:
* web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt:
* web-platform-tests/streams/readable-byte-streams/general.js:
(test):
* web-platform-tests/streams/readable-streams/general-expected.txt:
* web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt:
* web-platform-tests/streams/readable-streams/general.js:
(test.get assert_throws):
(test):
* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* 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/urltestdata.json:
* web-platform-tests/user-timing/clear_all_marks.any-expected.txt: Added.
* web-platform-tests/user-timing/clear_all_marks.any.html: Added.
* web-platform-tests/user-timing/clear_all_marks.any.js: Added.
(test):
* web-platform-tests/user-timing/clear_all_marks.worker-expected.txt: Added.
* web-platform-tests/user-timing/clear_all_marks.worker.html: Added.
* web-platform-tests/user-timing/clear_all_measures.any-expected.txt: Added.
* web-platform-tests/user-timing/clear_all_measures.any.html: Added.
* web-platform-tests/user-timing/clear_all_measures.any.js: Added.
(test):
* web-platform-tests/user-timing/clear_all_measures.worker-expected.txt: Added.
* web-platform-tests/user-timing/clear_all_measures.worker.html: Added.
* web-platform-tests/user-timing/clear_non_existent_mark.any-expected.txt: Added.
* web-platform-tests/user-timing/clear_non_existent_mark.any.html: Added.
* web-platform-tests/user-timing/clear_non_existent_mark.any.js: Added.
(test):
* web-platform-tests/user-timing/clear_non_existent_mark.worker-expected.txt: Added.
* web-platform-tests/user-timing/clear_non_existent_mark.worker.html: Added.
* web-platform-tests/user-timing/clear_non_existent_measure.any-expected.txt: Added.
* web-platform-tests/user-timing/clear_non_existent_measure.any.html: Added.
* web-platform-tests/user-timing/clear_non_existent_measure.any.js: Added.
(test):
* web-platform-tests/user-timing/clear_non_existent_measure.worker-expected.txt: Added.
* web-platform-tests/user-timing/clear_non_existent_measure.worker.html: Added.
* web-platform-tests/user-timing/clear_one_mark.any-expected.txt: Added.
* web-platform-tests/user-timing/clear_one_mark.any.html: Added.
* web-platform-tests/user-timing/clear_one_mark.any.js: Added.
(test):
* web-platform-tests/user-timing/clear_one_mark.worker-expected.txt: Added.
* web-platform-tests/user-timing/clear_one_mark.worker.html: Added.
* web-platform-tests/user-timing/clear_one_measure.any-expected.txt: Added.
* web-platform-tests/user-timing/clear_one_measure.any.html: Added.
* web-platform-tests/user-timing/clear_one_measure.any.js: Added.
(test):
* web-platform-tests/user-timing/clear_one_measure.worker-expected.txt: Added.
* web-platform-tests/user-timing/clear_one_measure.worker.html: Added.
* web-platform-tests/user-timing/entry_type.any-expected.txt: Added.
* web-platform-tests/user-timing/entry_type.any.html: Added.
* web-platform-tests/user-timing/entry_type.any.js: Added.
(test):
* web-platform-tests/user-timing/entry_type.worker-expected.txt: Added.
* web-platform-tests/user-timing/entry_type.worker.html: Added.
* web-platform-tests/user-timing/idlharness-expected.txt:
* web-platform-tests/user-timing/idlharness.html:
* web-platform-tests/user-timing/invoke_with_timing_attributes-expected.txt: Added.
* web-platform-tests/user-timing/invoke_with_timing_attributes.html: Added.
* web-platform-tests/user-timing/invoke_with_timing_attributes.worker-expected.txt: Added.
* web-platform-tests/user-timing/invoke_with_timing_attributes.worker.html: Added.
* web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js: Added.
(emit_test):
(emit_test2):
* web-platform-tests/user-timing/invoke_without_parameter-expected.txt: Added.
* web-platform-tests/user-timing/invoke_without_parameter.html: Added.
* web-platform-tests/user-timing/mark.any-expected.txt: Added.
* web-platform-tests/user-timing/mark.any.html: Added.
* web-platform-tests/user-timing/mark.any.js: Added.
(match_entries):
(filter_entries_by_type):
(test):
(test_mark):
* web-platform-tests/user-timing/mark.worker-expected.txt: Added.
* web-platform-tests/user-timing/mark.worker.html: Added.
* web-platform-tests/user-timing/mark_exceptions-expected.txt: Added.
* web-platform-tests/user-timing/mark_exceptions.html: Added.
* web-platform-tests/user-timing/measure-expected.txt: Added.
* web-platform-tests/user-timing/measure.html: Added.
* web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt: Added.
* web-platform-tests/user-timing/measure_exceptions_navigation_timing.html: Added.
* web-platform-tests/user-timing/measure_navigation_timing-expected.txt: Added.
* web-platform-tests/user-timing/measure_navigation_timing.html: Added.
* web-platform-tests/user-timing/measure_syntax_err.any-expected.txt: Added.
* web-platform-tests/user-timing/measure_syntax_err.any.html: Added.
* web-platform-tests/user-timing/measure_syntax_err.any.js: Added.
(test):
* web-platform-tests/user-timing/measure_syntax_err.worker-expected.txt: Added.
* web-platform-tests/user-timing/measure_syntax_err.worker.html: Added.
* web-platform-tests/user-timing/resources/webperftestharness.js:
* web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt:
* web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt:
* web-platform-tests/user-timing/user_timing_exists.any-expected.txt: Added.
* web-platform-tests/user-timing/user_timing_exists.any.html: Added.
* web-platform-tests/user-timing/user_timing_exists.any.js: Added.
(test):
* web-platform-tests/user-timing/user_timing_exists.worker-expected.txt: Added.
* web-platform-tests/user-timing/user_timing_exists.worker.html: Added.
* web-platform-tests/user-timing/w3c-import.log:
* web-platform-tests/w3c-import.log:
* web-platform-tests/webrtc/OWNERS:
* web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates-expected.txt: Added.
* web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html: Added.
* web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState-expected.txt: Added.
* web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html: Added.
* web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize-expected.txt:
* web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html:
* web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt:
* web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html:
* web-platform-tests/webrtc/rtcpeerconnection/w3c-import.log:

Tools:

* Scripts/webkitpy/common/checkout/scm/git.py:
(Git.fetch): Fetching origin remote in case there is more than one.

LayoutTests:

* TestExpectations:
* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-expected.txt: Added.
* platform/mac/TestExpectations:
* 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="#trunkLayoutTestsimportedw3cwebplatformtestsCONTRIBUTINGmd">trunk/LayoutTests/imported/w3c/web-platform-tests/CONTRIBUTING.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordirectionindexkeyrangehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordirectionobjectstorekeyrangehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.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="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabase_createObjectStore9invalidparametershtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_deletedhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBsupportpromisesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support-promises.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsLICENSEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/LICENSE.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/README.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsWebIDLecmascriptbindingesexceptionsexceptionshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequesteventreadystatechangeloadedhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresourcesauth2corsenabledpy">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/auth2/corsenabled.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresourcesconditionalpy">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/conditional.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendauthenticationcorsbasicsetrequestheaderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendauthenticationcorsbasicsetrequestheaderhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendentitybodydocumentbogusexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendentitybodydocumentbogushtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendnonsameoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendnonsameoriginhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin.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_lintsh">trunk/LayoutTests/imported/w3c/web-platform-tests/ci_lint.sh</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsallowheadersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsallowheadershtm">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsoriginhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorspreflightfailurehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/preflight-failure.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsredirectuserinfoexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsredirectuserinfohtm">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscorsrequestheadershtm">trunk/LayoutTests/imported/w3c/web-platform-tests/cors/request-headers.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportflexiblelengths001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportgridtemplateareas001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-areas-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportgridtemplatecolumnsrows001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-columns-rows-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportnamedgridlines001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-named-grid-lines-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportrepeat001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-repeat-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinetemplatecolumnsrowsresolvedvalues001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportflexiblelengths001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportgridtemplateareas001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-areas-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportgridtemplatecolumnsrows001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-columns-rows-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportnamedgridlines001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-named-grid-lines-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportrepeat001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-repeat-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridtemplatecolumnsrowsresolvedvalues001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griditemsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1gridmodelgridcomputedvaluedisplayfloateditems001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1gridmodelgridsupportdisplay001xht">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1gridmodelw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt</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="#trunkLayoutTestsimportedw3cwebplatformtestsdomlistsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsencryptedmediacontentcontentmetadatajs">trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/content-metadata.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsencryptedmediacontentw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerredirectedworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerredirectedworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsfilteringexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsfilteringworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsfilteringjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadersidlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-idl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectcountcrossoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectcountcrossoriginworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit003subexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit003subhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub.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="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsbeforeunloadcancelingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsbeforeunloadcancelinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacew3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersorigincrossoriginobjectscrossoriginobjectsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersorigincrossoriginobjectscrossoriginobjectshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynamew3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowproxyexoticobjectw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowproxyexoticobjectwindowproxyprototypesettingcrossoriginsubexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenerclosedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenermultiplehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenernoopenerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenernoreferrerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/w3c-import.log</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="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlresourcescommonjs">trunk/LayoutTests/imported/w3c/web-platform-tests/html/resources/common.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.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="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisthewindoworworkerglobalscopemixinWorker_Self_Originhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsimagesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/images/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsinnerTextsetterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsinnerTextsettertestsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-tests.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsinnerTextsetterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestslintwhitelist">trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingSyntheticResponsepy">trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/SyntheticResponse.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingresourcetimingjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingresource_connection_reusehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesidlharnessjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/idlharness.js</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="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js</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="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroljs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js</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="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js</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="#trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughjs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js</a></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="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraljs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneralexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt</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="#trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraljs">trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlinterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/interfaces-expected.txt</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="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingidlharnessexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingidlharnesshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness.html</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_mark_exceptionsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_exceptionsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcconfigurationicecandidatepoolsizeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcconfigurationicecandidatepoolsizehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcpeerconnectionidlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcpeerconnectionidlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsplatformmacTestExpectations">trunk/LayoutTests/platform/mac/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1TestExpectations">trunk/LayoutTests/platform/mac-wk1/TestExpectations</a></li>
<li><a href="#trunkLayoutTeststestsoptionsjson">trunk/LayoutTests/tests-options.json</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsScriptswebkitpycommoncheckoutscmgitpy">trunk/Tools/Scripts/webkitpy/common/checkout/scm/git.py</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRFEFEpem">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFE.pem</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRFEFFpem">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFF.pem</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRcacertpem">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cacert.pem</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRcakeypem">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cakey.pem</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxt">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxtattr">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxtattrold">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr.old</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxtold">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.old</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRlocalhostkey">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.key</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRlocalhostpem">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.pem</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRserial">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRserialold">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial.old</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_createIndex15autoincrementexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_createIndex15autoincrementhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBinterleavedcursorsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBinterleavedcursorshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBparallelcursorsupgradeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBparallelcursorsupgradehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendconditionalcorsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendconditionalcorshtm">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsenduspanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsenduspanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsenduspanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.js</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfaceshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesidl">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.idl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerwhendowngradehttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerwhendowngradehttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginwhencrossoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginwhencrossoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrersameoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrersameoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginwhencrossoriginhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginwhencrossoriginhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerunsafeurlhttpsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerunsafeurlhttpshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconresourcesinspectheaderpy">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/inspect-header.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsbeaconresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsshtaccess">trunk/LayoutTests/imported/w3c/web-platform-tests/css/.htaccess</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscssOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/css/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscssREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/css/README.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscssbuildcsstestsuitessh">trunk/LayoutTests/imported/w3c/web-platform-tests/css/build-css-testsuites.sh</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscssrequirementstxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css/requirements.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscssw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1OWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1cubicbeziertimingfunctionsoutputexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1cubicbeziertimingfunctionsoutputhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionsoutputexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionsoutputhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionssyntaxexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionssyntaxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1steptimingfunctionsoutputexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1steptimingfunctionsoutputhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1testcommonjs">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/testcommon.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestscsstiming1w3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomlistsREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/README.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferreranyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferreranyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferreranyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferreranyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferreranyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferreranyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferreranyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferreranyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferreranyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstaranyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstaranyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstaranyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcache304updateexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcache304updatehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/README.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheccrequestexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheccrequesthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachefreshnessexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachefreshnesshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheheuristicexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheheuristichtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachehttpcachejs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/http-cache.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheinvalidateexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheinvalidatehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachepartialexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachepartialhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheresourceshttpcachepy">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/http-cache.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachestatusexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachestatushtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachevaryexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachevaryhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachew3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimebasicanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimebasicanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimebasicanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacelocationprototypesettingcrossoriginsubexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacelocationprototypesettingcrossoriginsubhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameopenfeaturestokenization001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameopenfeaturestokenization001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameresourcescloseselfhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowproxyexoticobjectwindowproxyprototypesettingcrossoriginsubhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank002html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank003expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank003html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent002html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent003expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent003html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent004expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent004html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self002html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top002html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top003expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top003html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault002html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschooseexisting001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschooseexisting001html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent001iframe1html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent002iframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent002windowhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent003iframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent003windowhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent004iframe1html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent004iframe2html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_self001iframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_self002iframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_top002windowhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_top003iframe1html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_top003iframe2html">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoosedefault002iframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschooseexisting001iframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesopenin_parenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesopenin_tophtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesreporthasopenerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesreportistophtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsopenercrossoriginmanualsubhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesopenercrossoriginembedsubhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesopenercrossoriginendtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesopenercrossoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmldomOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsOWNERS">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/OWNERS</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionstartendexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionstartendhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionvalueinteractionsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionvalueinteractionshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementcenteringexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementcenteringiframesubhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementcenteringhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesetintervalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesetintervalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesettimeoutexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesettimeouthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsetintervalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsetintervalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsettimeoutexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsettimeouthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsimagespatternogv">trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsimagespatternpng">trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsmediacapturefromelementidlharnessexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsmediacapturefromelementidlharnesshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsmediacapturefromelementw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceshtaccess">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/.htaccess</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsapimd">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsapimdorig">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md.orig</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsidlharnessmd">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/idlharness.md</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisampleerrorworkerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-error-worker.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisampleworkerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-worker.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisamplehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample10html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample10.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample11html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample11.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample12html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample12htmlorig">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html.orig</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample13html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample13.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample14html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample14.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample15html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample15.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample16html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample16.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample17html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample17.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample2htm">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample2.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample3htm">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample3.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample4htm">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample4.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample5htm">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample5.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample6html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample6.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample7html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample7.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample8html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample8.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample9html">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample9.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourcesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2coveragehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/coverage.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2indexjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/index.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2libw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/lib/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2packagejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/package.json</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididldictrequireddefaultwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/dict-required-default.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlenumwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlmaplike1typewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlmodulewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/module.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlnonnullableanywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlnonnullableobjectswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlraiseswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlreadonlyiterablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlscopednamewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlsequenceAsAttributewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlsetlike2typeswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlspecialomittablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlstringconstantsidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididltypedefnestedwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsondictrequireddefaultjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/dict-required-default.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonenumjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/enum.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonmaplike1typejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonmodulejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/module.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonnonnullableanyjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonnonnullableobjectsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonraisesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/raises.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonreadonlyiterablejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonscopednamejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonsequenceAsAttributejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonsetlike2typesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonspecialomittablejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonstringconstantsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsontypedefnestedjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testmochaopts">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/mocha.opts</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlallowanywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/allowany.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlarraywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/array.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlattributeswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlcallbackwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlcallerwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlconstantswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlconstructorwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldictionaryinheritswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldictionarywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldocumentationdoswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldocumentationwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlenumwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlequivalentdeclwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlexceptioninheritancewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlexceptionwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlextendedattributeswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlgenericwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlgettersetterwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlidentifierqualifiednameswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlimplementswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlindexedpropertieswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlinheritsgetterwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlinterfaceinheritswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidliterablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidliteratorwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidllegacyiterablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlmapwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/map.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlmaplikewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnamedconstructorwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnointerfaceobjectwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnullablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnullableobjectswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidloperationoptionalargwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidloverloadingwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidloverridebuiltinswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlpartialinterfacewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlprimitiveswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlprototyperootwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlputforwardswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlregoperationswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlreplaceablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlsequencewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlserializerwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlsetlikewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstaticwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/static.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstringifierattributewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstringifiercustomwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstringifierwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltreatasnullwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltreatasundefinedwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltypedefnestedwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltypedefwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltypesuffixeswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidluniontypewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlvariadicoperationswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonallowanyjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/allowany.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonarrayjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/array.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonattributesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/attributes.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoncallbackjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/callback.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoncallerjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/caller.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonconstantsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constants.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonconstructorjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constructor.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondictionaryinheritsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondictionaryjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondocumentationdosjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondocumentationjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonenumjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/enum.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonequivalentdecljson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonexceptioninheritancejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonexceptionjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonextendedattributesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsongenericjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/generic.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsongettersetterjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonidentifierqualifiednamesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonimplementsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/implements.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonindexedpropertiesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoninheritsgetterjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoninterfaceinheritsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoniterablejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterable.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoniteratorjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterator.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonlegacyiterablejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonmapjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/map.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonmaplikejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/maplike.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnamedconstructorjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnointerfaceobjectjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnullablejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullable.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnullableobjectsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonoperationoptionalargjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonoverloadingjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overloading.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonoverridebuiltinsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonpartialinterfacejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonprimitivesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/primitives.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonprototyperootjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonputforwardsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonregoperationsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonreplaceablejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonsequencejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/sequence.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonserializerjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/serializer.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonsetlikejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/setlike.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstaticjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/static.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstringifierattributejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstringifiercustomjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstringifierjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontreatasnulljson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontreatasundefinedjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontypedefnestedjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontypedefjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontypesuffixesjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonuniontypejson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonvariadicoperationsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxopttypedefnestedjson">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/typedef-nested.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxoptw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwebmakewebtestsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/make-web-tests.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwebruntestsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/run-tests.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwebw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocLICENSE">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/LICENSE</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocMakefile">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/Makefile</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocREADMEmd">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/README.md</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdochtmltodtdxsl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdochtmltodtdxslorig">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl.orig</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdocw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdocwidlprochtml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdocwidlprochtmlorig">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html.orig</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesMakefile">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/Makefile</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesREADME">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/README</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesbondiwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesfilesystemwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesspectowidlxsl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesspectowidlxslorig">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl.orig</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexampleswidlhtmlcss">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrccommentc">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrccommenth">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcentitiesh">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/entities.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrclexc">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrclexh">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcmainc">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/main.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcmiscc">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcmisch">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcnodec">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcnodeh">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcosh">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/os.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcparsec">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcparseh">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcprocessc">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.c</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcprocessh">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.h</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcwidlprocxmltohtmlxsl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcwidlprocxmltohtmlxslorig">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl.orig</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestMakefile">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/Makefile</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorenumtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/enum.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrormoduletxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrornonnullableanytxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrornonnullableobjectstxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorscopednametxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorsequenceAsAttributetxt">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorstringconstantsidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlenumwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlmodulewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlnonnullableanywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlnonnullableobjectswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlraiseswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlscopednamewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlsequenceAsAttributewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlspecialomittablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlstringconstantsidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlallowanywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlarraywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlattributeswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlcallbackwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlcallerwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlconstantswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlconstructorwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldictionaryinheritswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldictionarywidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldocumentationdoswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldocumentationwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlenumwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlequivalentdeclwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlexceptioninheritancewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlexceptionwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlgettersetterwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlidentifierqualifiednameswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlimplementswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlindexedpropertieswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlinheritsgetterwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlinterfaceinheritswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididliteratorwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnamedconstructorwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnointerfaceobjectwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnullablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnullableobjectswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididloperationoptionalargwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididloverloadingwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididloverridebuiltinswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlpartialinterfacewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlprimitiveswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlprototyperootwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlputforwardswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlregoperationswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlreplaceablewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlsequencewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlserializerwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstaticwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstringifierattributewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstringifiercustomwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstringifierwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltreatasnullwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltreatasundefinedwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltypedefwidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltypesuffixeswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididluniontypewidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlvariadicoperationswidl">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/w3c-import.log</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlallowanywidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlarraywidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlattributeswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlcallbackwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlcallerwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlconstantswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlconstructorwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldictionaryinheritswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldictionarywidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldocumentationdoswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldocumentationwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlenumwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlequivalentdeclwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlexceptioninheritancewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlexceptionwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlgettersetterwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/getter-setter.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlidentifierqualifiednameswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlimplementswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlindexedpropertieswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlinheritsgetterwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlinterfaceinheritswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmliteratorwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlmodulewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnamedconstructorwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnamespaceobjectwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnointerfaceobjectwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnullablewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnullableobjectswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmloperationoptionalargwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmloverloadingwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmloverridebuiltinswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlpartialinterfacewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlprimitiveswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlprototyperootwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlputforwardswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlregoperationswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlreplaceablewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlsequencewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlserializerwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlspecialomittablewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstaticwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstringifierattributewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstringifiercustomwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstringifierwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltreatasnullwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltreatasundefinedwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltypedefwidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltypesuffixeswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmluniontypewidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlvariadicoperationswidlprocxml">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocw3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2w3cimportlog">trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/w3c-import.log</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesworkerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_without_parameterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_without_parameterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmark_exceptionsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmark_exceptionshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasureexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasurehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_exceptions_navigation_timingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_exceptions_navigation_timinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_navigation_timingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_navigation_timinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_erranyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_erranyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_erranyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_errworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_errworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsanyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsanyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsanyjs">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioncanTrickleIceCandidatesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioncanTrickleIceCandidateshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioniceGatheringStateexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioniceGatheringStatehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html</a></li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/events/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsdomeventsEventTargetdispatchEventexpectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt</a></li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/</li>
<li>trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/</li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameopenfeaturestokenization001expectedtxt">trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt</a></li>
<li>trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/</li>
<li><a href="#trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcache304updateexpectedtxt">trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcacheccrequestexpectedtxt">trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcacheheuristicexpectedtxt">trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcacheinvalidateexpectedtxt">trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcachestatusexpectedtxt">trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadershtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadershtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeabouthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedatajs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponsehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponsejs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasichtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookieshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflighthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirecthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatushtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflighthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.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="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflighthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirecthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasichtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookieshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.js</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="#trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresourcesredirectcountpy">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/redirect-count.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsfetchnosniffimportscriptsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/nosniff/importscripts-expected.txt</a></li>
<li>trunk/LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/url/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/ChangeLog        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2017-04-09  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        Resync WPT tests up to 23cd07d4685d81024b7440e042f8bbdb33e7ddec
+        https://bugs.webkit.org/show_bug.cgi?id=170647
+
+        Reviewed by Sam Weinig.
+
+        * TestExpectations:
+        * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-expected.txt: Added.
+        * platform/mac/TestExpectations:
+        * tests-options.json:
+
</ins><span class="cx"> 2017-04-09  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         test262: test262/test/annexB/language/literals/regexp/identity-escape.js
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/TestExpectations        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -340,15 +340,11 @@
</span><span class="cx"> webkit.org/b/157145 imported/w3c/web-platform-tests/fetch/nosniff/stylesheet.html [ Failure Pass ]
</span><span class="cx"> webkit.org/b/161312 imported/w3c/web-platform-tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html [ Failure Pass ]
</span><span class="cx"> 
</span><del>-imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html [ DumpJSConsoleLogInStdErr ]
-imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html [ DumpJSConsoleLogInStdErr ]
-imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html [ DumpJSConsoleLogInStdErr ]
-imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html [ DumpJSConsoleLogInStdErr ]
-
</del><span class="cx"> # rdar://problem/30975761
</span><span class="cx"> [ Debug ] http/tests/fetch/fetch-in-worker-crash.html [ Pass Crash ]
</span><del>-webkit.org/b/170395 [ Debug ] imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html [ DumpJSConsoleLogInStdErr Pass Crash ]
</del><span class="cx"> 
</span><ins>+imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors.htm [ Failure ]
+imported/w3c/web-platform-tests/fetch/http-cache/partial.html [ Failure ]
</ins><span class="cx"> webkit.org/b/159724 imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-post-upload.htm [ Failure Pass ]
</span><span class="cx"> webkit.org/b/167380 imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html [ Failure Pass ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,1258 @@
</span><ins>+2017-04-09  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        Resync WPT tests up to 23cd07d4685d81024b7440e042f8bbdb33e7ddec
+        https://bugs.webkit.org/show_bug.cgi?id=170647
+
+        Reviewed by Sam Weinig.
+
+        Removing CSS import repository as it is merged into WPT.
+
+        * resources/TestRepositories:
+        * resources/import-expectations.json:
+        * resources/resource-files.json:
+        * web-platform-tests/%CERTS_DIR%/FEFE.pem: Added.
+        * web-platform-tests/%CERTS_DIR%/FEFF.pem: Added.
+        * web-platform-tests/%CERTS_DIR%/cacert.pem: Added.
+        * web-platform-tests/%CERTS_DIR%/cakey.pem: Added.
+        * web-platform-tests/%CERTS_DIR%/index.txt: Added.
+        * web-platform-tests/%CERTS_DIR%/index.txt.attr: Added.
+        * web-platform-tests/%CERTS_DIR%/index.txt.attr.old: Added.
+        * web-platform-tests/%CERTS_DIR%/index.txt.old: Added.
+        * web-platform-tests/%CERTS_DIR%/localhost.key: Added.
+        * web-platform-tests/%CERTS_DIR%/localhost.pem: Added.
+        * web-platform-tests/%CERTS_DIR%/serial: Added.
+        * web-platform-tests/%CERTS_DIR%/serial.old: Added.
+        * web-platform-tests/%CERTS_DIR%/w3c-import.log: Added.
+        * web-platform-tests/CONTRIBUTING.md:
+        * web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm:
+        * web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm:
+        * web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt:
+        * web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html:
+        * web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm:
+        * web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm: Added.
+        * web-platform-tests/IndexedDB/idbobjectstore_deleted.htm:
+        * web-platform-tests/IndexedDB/interleaved-cursors-expected.txt: Added.
+        * web-platform-tests/IndexedDB/interleaved-cursors.html: Added.
+        * web-platform-tests/IndexedDB/parallel-cursors-upgrade-expected.txt: Added.
+        * web-platform-tests/IndexedDB/parallel-cursors-upgrade.html: Added.
+        * web-platform-tests/IndexedDB/support-promises.js:
+        (migrateNamedDatabase):
+        (createNamedDatabase):
+        (openNamedDatabase):
+        * web-platform-tests/IndexedDB/w3c-import.log:
+        * web-platform-tests/LICENSE.md:
+        * web-platform-tests/README.md:
+        * web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html:
+        * web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm:
+        * web-platform-tests/XMLHttpRequest/resources/auth2/corsenabled.py:
+        (main):
+        * web-platform-tests/XMLHttpRequest/resources/conditional.py:
+        (main):
+        * web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm:
+        * web-platform-tests/XMLHttpRequest/send-conditional-cors-expected.txt: Added.
+        * web-platform-tests/XMLHttpRequest/send-conditional-cors.htm: Added.
+        * web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus.htm:
+        * web-platform-tests/XMLHttpRequest/send-non-same-origin-expected.txt:
+        * web-platform-tests/XMLHttpRequest/send-non-same-origin.htm:
+        * web-platform-tests/XMLHttpRequest/send-usp.any-expected.txt: Added.
+        * web-platform-tests/XMLHttpRequest/send-usp.any.html: Added.
+        * web-platform-tests/XMLHttpRequest/send-usp.any.js: Added.
+        (encode):
+        (x.onload.overall_test.step_func):
+        * web-platform-tests/XMLHttpRequest/w3c-import.log:
+        * web-platform-tests/background-fetch/OWNERS: Added.
+        * web-platform-tests/background-fetch/interfaces-expected.txt: Added.
+        * web-platform-tests/background-fetch/interfaces-worker.https-expected.txt: Added.
+        * web-platform-tests/background-fetch/interfaces-worker.https.html: Added.
+        * web-platform-tests/background-fetch/interfaces.html: Added.
+        * web-platform-tests/background-fetch/interfaces.idl: Added.
+        * web-platform-tests/background-fetch/interfaces.worker-expected.txt: Added.
+        * web-platform-tests/background-fetch/interfaces.worker.html: Added.
+        * web-platform-tests/background-fetch/interfaces.worker.js: Added.
+        (promise_test):
+        * web-platform-tests/background-fetch/w3c-import.log: Added.
+        * web-platform-tests/beacon/headers/header-referrer-no-referrer-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-no-referrer.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-origin-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-origin.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-same-origin-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-same-origin.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-strict-origin.https-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer-unsafe-url.https-expected.txt: Added.
+        * web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html: Added.
+        * web-platform-tests/beacon/headers/header-referrer.js: Added.
+        (testReferrerHeader):
+        (return.new.Promise.):
+        (return.new.Promise):
+        * web-platform-tests/beacon/headers/w3c-import.log: Added.
+        * web-platform-tests/beacon/resources/inspect-header.py: Added.
+        (main):
+        * web-platform-tests/beacon/resources/w3c-import.log: Added.
+        * web-platform-tests/check_stability.py:
+        (get_git_cmd.git):
+        (fetch_wpt):
+        (get_branch_point):
+        (get_files_changed):
+        (process_results):
+        (markdown_adjust):
+        (get_parser):
+        (main):
+        * web-platform-tests/ci_lint.sh:
+        * web-platform-tests/cors/allow-headers-expected.txt:
+        * web-platform-tests/cors/allow-headers.htm:
+        * web-platform-tests/cors/origin-expected.txt:
+        * web-platform-tests/cors/origin.htm:
+        * web-platform-tests/cors/preflight-failure.htm:
+        * web-platform-tests/cors/redirect-userinfo-expected.txt:
+        * web-platform-tests/cors/redirect-userinfo.htm:
+        * web-platform-tests/cors/request-headers.htm:
+        * web-platform-tests/css-timing-1/OWNERS: Added.
+        * web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt: Added.
+        * web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html: Added.
+        * web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt: Added.
+        * web-platform-tests/css-timing-1/frames-timing-functions-output.html: Added.
+        * web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt: Added.
+        * web-platform-tests/css-timing-1/frames-timing-functions-syntax.html: Added.
+        * web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt: Added.
+        * web-platform-tests/css-timing-1/step-timing-functions-output.html: Added.
+        * web-platform-tests/css-timing-1/testcommon.js: Added.
+        (createDiv):
+        (createElement):
+        (pxToNum):
+        (xForT):
+        (yForT):
+        (tForX):
+        (return.bezierClosure):
+        (cubicBezier):
+        * web-platform-tests/css-timing-1/w3c-import.log: Added.
+        * web-platform-tests/css/.htaccess: Added.
+        * web-platform-tests/css/OWNERS: Added.
+        * web-platform-tests/css/README.md: Added.
+        * web-platform-tests/css/build-css-testsuites.sh: Added.
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-areas-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-columns-rows-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-named-grid-lines-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-repeat-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-areas-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-columns-rows-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-support-named-grid-lines-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-support-repeat-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-items/w3c-import.log:
+        * web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht:
+        * web-platform-tests/css/css-grid-1/grid-model/w3c-import.log:
+        * web-platform-tests/css/requirements.txt: Added.
+        * web-platform-tests/css/w3c-import.log: Added.
+        * web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt:
+        * web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt:
+        * web-platform-tests/dom/lists/DOMTokenList-iteration.html:
+        * web-platform-tests/dom/lists/README.md: Added.
+        * web-platform-tests/dom/lists/w3c-import.log:
+        * web-platform-tests/dom/nodes/Document-createEvent-expected.txt:
+        * web-platform-tests/dom/nodes/Document-createEvent.html:
+        * web-platform-tests/dom/nodes/Document-createEvent.js:
+        * web-platform-tests/encrypted-media/content/content-metadata.js:
+        * web-platform-tests/encrypted-media/content/w3c-import.log:
+        * web-platform-tests/fetch/OWNERS:
+        * web-platform-tests/fetch/api/basic/accept-header-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/accept-header-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/accept-header.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/accept-header.any.html: Added.
+        * web-platform-tests/fetch/api/basic/accept-header.any.js: Added.
+        (promise_test):
+        * web-platform-tests/fetch/api/basic/accept-header.html: Removed.
+        * web-platform-tests/fetch/api/basic/accept-header.js: Removed.
+        * web-platform-tests/fetch/api/basic/accept-header.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/accept-header.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/mode-same-origin-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.any.html: Added.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.any.js: Added.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.html: Removed.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.js: Removed.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/mode-same-origin.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/referrer-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/referrer-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/referrer-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/referrer.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/referrer.any.html: Added.
+        * web-platform-tests/fetch/api/basic/referrer.any.js: Added.
+        * web-platform-tests/fetch/api/basic/referrer.html: Removed.
+        * web-platform-tests/fetch/api/basic/referrer.js: Removed.
+        * web-platform-tests/fetch/api/basic/referrer.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/referrer.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.any.html: Added.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js: Added.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.js: Removed.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-forbidden-headers.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/request-head-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-head-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-head.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-expected.txt.
+        * web-platform-tests/fetch/api/basic/request-head.any.html: Added.
+        * web-platform-tests/fetch/api/basic/request-head.any.js: Added.
+        (promise_test):
+        * web-platform-tests/fetch/api/basic/request-head.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-head.js: Removed.
+        * web-platform-tests/fetch/api/basic/request-head.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-head.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/request-headers-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-headers-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-headers.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-headers.any.html: Added.
+        * web-platform-tests/fetch/api/basic/request-headers.any.js: Added.
+        * web-platform-tests/fetch/api/basic/request-headers.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-headers.js: Removed.
+        * web-platform-tests/fetch/api/basic/request-headers.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-headers.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/request-referrer-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-referrer-redirected-worker-expected.txt:
+        * web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html:
+        * web-platform-tests/fetch/api/basic/request-referrer-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-referrer-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-referrer.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-referrer.any.html: Added.
+        * web-platform-tests/fetch/api/basic/request-referrer.any.js: Added.
+        * web-platform-tests/fetch/api/basic/request-referrer.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-referrer.js: Removed.
+        * web-platform-tests/fetch/api/basic/request-referrer.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-referrer.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/request-upload-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/request-upload-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-upload.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-upload.any.html: Added.
+        * web-platform-tests/fetch/api/basic/request-upload.any.js: Added.
+        * web-platform-tests/fetch/api/basic/request-upload.html: Removed.
+        * web-platform-tests/fetch/api/basic/request-upload.js: Removed.
+        * web-platform-tests/fetch/api/basic/request-upload.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/request-upload.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-about-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt.
+        * web-platform-tests/fetch/api/basic/scheme-about.any.html: Added.
+        * web-platform-tests/fetch/api/basic/scheme-about.any.js: Added.
+        * web-platform-tests/fetch/api/basic/scheme-about.html: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-about.js: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-about.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/scheme-about.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-data-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-expected.txt.
+        * web-platform-tests/fetch/api/basic/scheme-data.any.html: Added.
+        * web-platform-tests/fetch/api/basic/scheme-data.any.js: Added.
+        * web-platform-tests/fetch/api/basic/scheme-data.html: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-data.js: Removed.
+        * web-platform-tests/fetch/api/basic/scheme-data.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/scheme-data.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/stream-response-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/basic/stream-response-worker.html: Removed.
+        * web-platform-tests/fetch/api/basic/stream-response.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/stream-response.any.html: Added.
+        * web-platform-tests/fetch/api/basic/stream-response.any.js: Added.
+        (promise_test):
+        * web-platform-tests/fetch/api/basic/stream-response.html: Removed.
+        * web-platform-tests/fetch/api/basic/stream-response.js: Removed.
+        * web-platform-tests/fetch/api/basic/stream-response.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/basic/stream-response.worker.html: Added.
+        * web-platform-tests/fetch/api/basic/w3c-import.log:
+        * web-platform-tests/fetch/api/cors/cors-basic-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-basic-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-basic.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-basic.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-basic.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-basic.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-basic.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-basic.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-cookies-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-cookies-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-cookies.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-cookies.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-cookies.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-cookies.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-cookies.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-cookies.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-filtering-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt:
+        * web-platform-tests/fetch/api/cors/cors-filtering.js:
+        (corsExposeFilter):
+        * web-platform-tests/fetch/api/cors/cors-no-preflight-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-no-preflight.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-origin-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-origin-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-origin.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-origin.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-origin.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-origin.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-origin.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-origin.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-star.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.any.js: Added.
+        (corsPreflightStatus):
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-status.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-preflight.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-preflight.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect-worker.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect.any.html: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect.any.js: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect.html: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect.js: Removed.
+        * web-platform-tests/fetch/api/cors/cors-redirect.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/cors/cors-redirect.worker.html: Added.
+        * web-platform-tests/fetch/api/cors/w3c-import.log:
+        * web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt: Removed.
+        * web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/credentials/authentication-basic-worker.html: Removed.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.any.html: Added.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.any.js: Added.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.html: Removed.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.js: Removed.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/credentials/authentication-basic.worker.html: Added.
+        * web-platform-tests/fetch/api/credentials/cookies-expected.txt: Removed.
+        * web-platform-tests/fetch/api/credentials/cookies-worker-expected.txt: Removed.
+        * web-platform-tests/fetch/api/credentials/cookies-worker.html: Removed.
+        * web-platform-tests/fetch/api/credentials/cookies.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/credentials/cookies.any.html: Added.
+        * web-platform-tests/fetch/api/credentials/cookies.any.js: Added.
+        * web-platform-tests/fetch/api/credentials/cookies.html: Removed.
+        * web-platform-tests/fetch/api/credentials/cookies.js: Removed.
+        * web-platform-tests/fetch/api/credentials/cookies.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/credentials/cookies.worker.html: Added.
+        * web-platform-tests/fetch/api/credentials/w3c-import.log:
+        * web-platform-tests/fetch/api/headers/headers-idl-expected.txt:
+        * web-platform-tests/fetch/api/headers/historical.any-expected.txt: Added.
+        * web-platform-tests/fetch/api/headers/historical.any.html: Added.
+        * web-platform-tests/fetch/api/headers/historical.any.js: Added.
+        (test):
+        * web-platform-tests/fetch/api/headers/historical.worker-expected.txt: Added.
+        * web-platform-tests/fetch/api/headers/historical.worker.html: Added.
+        * web-platform-tests/fetch/api/headers/w3c-import.log:
+        * web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-count-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-count-worker-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-location-expected.txt:
+        * web-platform-tests/fetch/api/redirect/redirect-location-worker-expected.txt:
+        * web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt: Removed.
+        * web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt:
+        * web-platform-tests/fetch/api/request/request-init-003.sub.html:
+        * web-platform-tests/fetch/api/resources/redirect-count.py: Removed.
+        * web-platform-tests/fetch/http-cache/304-update-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/304-update.html: Added.
+        * web-platform-tests/fetch/http-cache/README.md: Added.
+        * web-platform-tests/fetch/http-cache/cc-request-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/cc-request.html: Added.
+        * web-platform-tests/fetch/http-cache/freshness-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/freshness.html: Added.
+        * web-platform-tests/fetch/http-cache/heuristic-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/heuristic.html: Added.
+        * web-platform-tests/fetch/http-cache/http-cache.js: Added.
+        (make_url):
+        (server_state):
+        (make_test.fetch_functions.push.):
+        (make_test.fetch_functions.push):
+        (make_test.):
+        (make_test.run_next_step):
+        (make_test):
+        (http_date):
+        * web-platform-tests/fetch/http-cache/invalidate-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/invalidate.html: Added.
+        * web-platform-tests/fetch/http-cache/partial-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/partial.html: Added.
+        * web-platform-tests/fetch/http-cache/resources/http-cache.py: Added.
+        (main):
+        * web-platform-tests/fetch/http-cache/resources/w3c-import.log: Added.
+        * web-platform-tests/fetch/http-cache/status-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/status.html: Added.
+        * web-platform-tests/fetch/http-cache/vary-expected.txt: Added.
+        * web-platform-tests/fetch/http-cache/vary.html: Added.
+        * web-platform-tests/fetch/http-cache/w3c-import.log: Added.
+        * web-platform-tests/fetch/nosniff/importscripts-expected.txt: Removed.
+        * web-platform-tests/hr-time/basic.any-expected.txt: Added.
+        * web-platform-tests/hr-time/basic.any.html: Added.
+        * web-platform-tests/hr-time/basic.any.js: Added.
+        (test):
+        (async_test):
+        * web-platform-tests/hr-time/monotonic-clock.any-expected.txt: Added.
+        * web-platform-tests/hr-time/monotonic-clock.any.html: Added.
+        * web-platform-tests/hr-time/monotonic-clock.any.js: Added.
+        (test):
+        * web-platform-tests/hr-time/monotonic-clock.worker-expected.txt: Added.
+        * web-platform-tests/hr-time/monotonic-clock.worker.html: Added.
+        * web-platform-tests/hr-time/w3c-import.log:
+        * web-platform-tests/html/OWNERS:
+        * web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt:
+        * web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html:
+        * web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub-expected.txt: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html: Added.
+        * web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt:
+        * web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html:
+        * web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html: Added.
+        * web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html: Added.
+        * web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log: Added.
+        * web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log:
+        * web-platform-tests/html/browsers/the-windowproxy-exotic-object/w3c-import.log:
+        * web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub-expected.txt:
+        * web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html: Added.
+        * web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html:
+        * web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html:
+        * web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html:
+        * web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html:
+        * web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html:
+        * web-platform-tests/html/browsers/windows/browsing-context-expected.txt:
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001-expected.txt: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html: Added.
+        * web-platform-tests/html/browsers/windows/browsing-context-names/resources/w3c-import.log:
+        * web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log:
+        * web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html: Added.
+        * web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html: Added.
+        * web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt: Added.
+        * web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html: Added.
+        * web-platform-tests/html/browsers/windows/resources/w3c-import.log:
+        * web-platform-tests/html/browsers/windows/w3c-import.log:
+        * web-platform-tests/html/dom/OWNERS: Added.
+        * web-platform-tests/html/dom/w3c-import.log:
+        * web-platform-tests/html/resources/common.js:
+        (newIFrame):
+        * web-platform-tests/html/semantics/OWNERS: Added.
+        * web-platform-tests/html/semantics/embedded-content/the-canvas-element/w3c-import.log:
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html: Added.
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt: Added.
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html: Added.
+        * web-platform-tests/html/semantics/forms/textfieldselection/selection.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/textfieldselection/w3c-import.log:
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt: Added.
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html: Added.
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html: Added.
+        * web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log:
+        * web-platform-tests/html/semantics/w3c-import.log:
+        * web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html:
+        * web-platform-tests/html/webappapis/timers/negative-setinterval-expected.txt: Added.
+        * web-platform-tests/html/webappapis/timers/negative-setinterval.html: Added.
+        * web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt: Added.
+        * web-platform-tests/html/webappapis/timers/negative-settimeout.html: Added.
+        * web-platform-tests/html/webappapis/timers/type-long-setinterval-expected.txt: Added.
+        * web-platform-tests/html/webappapis/timers/type-long-setinterval.html: Added.
+        * web-platform-tests/html/webappapis/timers/type-long-settimeout-expected.txt: Added.
+        * web-platform-tests/html/webappapis/timers/type-long-settimeout.html: Added.
+        * web-platform-tests/html/webappapis/timers/w3c-import.log:
+        * web-platform-tests/images/pattern.ogv: Added.
+        * web-platform-tests/images/pattern.png: Added.
+        * web-platform-tests/images/w3c-import.log:
+        * web-platform-tests/innerText/setter-expected.txt:
+        * web-platform-tests/innerText/setter-tests.js:
+        * web-platform-tests/innerText/setter.html:
+        * web-platform-tests/lint.whitelist:
+        * web-platform-tests/mediacapture-fromelement/idlharness-expected.txt: Added.
+        * web-platform-tests/mediacapture-fromelement/idlharness.html: Added.
+        * web-platform-tests/mediacapture-fromelement/w3c-import.log: Added.
+        * web-platform-tests/resource-timing/SyntheticResponse.py:
+        (main):
+        * web-platform-tests/resource-timing/resource-timing.js:
+        * web-platform-tests/resource-timing/resource_connection_reuse.html:
+        * web-platform-tests/resources/.htaccess: Added.
+        * web-platform-tests/resources/docs/api.md: Added.
+        * web-platform-tests/resources/docs/idlharness.md: Added.
+        * web-platform-tests/resources/docs/w3c-import.log: Added.
+        * web-platform-tests/resources/examples/apisample-error-worker.js: Added.
+        * web-platform-tests/resources/examples/apisample-worker.js: Added.
+        (test):
+        (async_test):
+        * web-platform-tests/resources/examples/apisample.htm: Added.
+        * web-platform-tests/resources/examples/apisample10.html: Added.
+        * web-platform-tests/resources/examples/apisample11.html: Added.
+        * web-platform-tests/resources/examples/apisample12.html: Added.
+        * web-platform-tests/resources/examples/apisample13.html: Added.
+        * web-platform-tests/resources/examples/apisample14.html: Added.
+        * web-platform-tests/resources/examples/apisample15.html: Added.
+        * web-platform-tests/resources/examples/apisample16.html: Added.
+        * web-platform-tests/resources/examples/apisample17.html: Added.
+        * web-platform-tests/resources/examples/apisample2.htm: Added.
+        * web-platform-tests/resources/examples/apisample3.htm: Added.
+        * web-platform-tests/resources/examples/apisample4.htm: Added.
+        * web-platform-tests/resources/examples/apisample5.htm: Added.
+        * web-platform-tests/resources/examples/apisample6.html: Added.
+        * web-platform-tests/resources/examples/apisample7.html: Added.
+        * web-platform-tests/resources/examples/apisample8.html: Added.
+        * web-platform-tests/resources/examples/apisample9.html: Added.
+        * web-platform-tests/resources/examples/w3c-import.log: Added.
+        * web-platform-tests/resources/idlharness.js:
+        (IdlInterface.prototype.test_member_iterable):
+        * web-platform-tests/resources/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/coverage.html: Added.
+        * web-platform-tests/resources/webidl2/index.js: Added.
+        * web-platform-tests/resources/webidl2/lib/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/package.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid.js: Added.
+        (idls.fs.readdirSync.dir.filter):
+        (map):
+        (errors.idls.map):
+        (i.func):
+        * web-platform-tests/resources/webidl2/test/invalid/idl/dict-required-default.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/module.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/idl/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/dict-required-default.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/enum.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/module.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/raises.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json: Added.
+        * web-platform-tests/resources/webidl2/test/invalid/json/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/mocha.opts: Added.
+        * web-platform-tests/resources/webidl2/test/syntax.js: Added.
+        (idls.fs.readdirSync.dir.filter):
+        (map):
+        (jsons.idls.map):
+        (i.func):
+        * web-platform-tests/resources/webidl2/test/syntax/idl/allowany.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/array.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/map.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/static.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/idl/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/allowany.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/array.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/attributes.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/callback.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/caller.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/constants.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/constructor.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/documentation.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/enum.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/exception.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/generic.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/implements.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/iterable.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/iterator.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/map.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/maplike.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/nullable.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/overloading.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/primitives.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/sequence.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/serializer.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/setlike.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/static.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/typedef.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/json/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/opt/typedef-nested.json: Added.
+        * web-platform-tests/resources/webidl2/test/syntax/opt/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/web/make-web-tests.js: Added.
+        (dir):
+        (allFromDir):
+        * web-platform-tests/resources/webidl2/test/web/run-tests.js: Added.
+        (i.func):
+        * web-platform-tests/resources/webidl2/test/web/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/LICENSE: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/Makefile: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/README.md: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/doc/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/Makefile: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/README: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css: Added.
+        (body):
+        (:link):
+        (:visited):
+        (a:active):
+        (a:link img, a:visited img):
+        (h1, h2, h3, h4, h5, h6):
+        (h1, h2, h3):
+        (h1):
+        (h2):
+        (h3):
+        (h4):
+        (h5):
+        (h6):
+        (.hide):
+        (code):
+        (ul.toc, ol.toc, ul.authors):
+        (div.head):
+        (div.head h1):
+        (div.head table):
+        (div.constraint, div.issue, div.note, div.notice):
+        (div.exampleInner pre):
+        (div.exampleOuter):
+        (div.exampleInner):
+        (div.exampleWrapper):
+        (div.exampleHeader):
+        (div.term):
+        (div.list):
+        (.optional):
+        (.copyright,.legalnotice):
+        (.copyright small):
+        (@media screen):
+        (a[href]:hover):
+        (ol.enumar):
+        (ol.enumla):
+        (ol.enumlr):
+        (ol.enumua):
+        (ol.enumur):
+        (.toc):
+        (pre):
+        (.examplecode):
+        (.def-api-feature-set dt, .def-api-feature dt, dt .def-device-cap, dt.const code):
+        (dt.attribute code, dt.method code):
+        (.def-device-caps dd):
+        (dt.method):
+        (.summary td):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/comment.c: Added.
+        (setcommentnode):
+        (joininlinecomments):
+        (outputchildren):
+        (default_askend):
+        (root_askend):
+        (root_output):
+        (endspecificcnode):
+        (startcnode):
+        (para_output):
+        (para_end):
+        (return_output):
+        (author_output):
+        (code_end):
+        (code_output):
+        (text_end):
+        (text_output):
+        (html_output):
+        (param_output):
+        (api_feature_output):
+        (def_api_feature_askend):
+        (def_api_feature_output):
+        (def_api_feature_set_output):
+        (def_instantiated_output):
+        (def_device_cap_output):
+        (iswhitespace):
+        (parseword):
+        (dox_b):
+        (dox_n):
+        (dox_code):
+        (dox_endcode):
+        (dox_param):
+        (dox_para):
+        (dox_throw):
+        (dox_attr):
+        (parsecomment):
+        (parsecomments):
+        (attachcommenttonode):
+        (attachcomments):
+        (processcomments):
+        (outputdescriptive):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/comment.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/entities.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/lex.c: Added.
+        (readinput):
+        (lexerrorexit):
+        (lexblockcomment):
+        (lexinlinecomment):
+        (lexnumber):
+        (lexstring):
+        (lexidentifier):
+        (lex):
+        (outputwidl):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/lex.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/main.c: Added.
+        (options):
+        (main):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/misc.c: Added.
+        (memalloc):
+        (memrealloc):
+        (memfree):
+        (memprintf):
+        (vmemprintf):
+        (vlocerrorexit):
+        (locerrorexit):
+        (errorexit):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/misc.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/node.c: Added.
+        (newelement):
+        (newattr):
+        (newattrlist):
+        (addnode):
+        (reversechildren):
+        (nodeisempty):
+        (nodewalk):
+        (findchildelement):
+        (getattr):
+        (findchildelementwithnameattr):
+        (findreturntype):
+        (findparamidentifier):
+        (findthrowidentifier):
+        (outputid):
+        (outputnode):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/node.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/os.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/parse.c: Added.
+        (tokerrorexit):
+        (lexnocomment):
+        (eat):
+        (setid):
+        (setidentifier):
+        (setargumentname):
+        (parsescopedname):
+        (parsescopednamelist):
+        (parsereturntype):
+        (parseunsignedintegertype):
+        (parsetypesuffix):
+        (parsetypesuffixstartingwitharray):
+        (parseprimitiveorstringtype):
+        (parsenonanytype):
+        (parseunionmembertype):
+        (parseuniontype):
+        (parsetype):
+        (parseextendedattribute):
+        (parseextendedattributelist):
+        (parseexceptionfield):
+        (parseargument):
+        (parseargumentlist):
+        (parseoperationrest):
+        (parsereturntypeandoperationrest):
+        (parseoptionaliteratorinterface):
+        (parseoperationoriteratorrest):
+        (parseattribute):
+        (parseserializer):
+        (parseattributeoroperationoriterator):
+        (parseconstexpr):
+        (parsedefaultvalue):
+        (parsedictionarymember):
+        (parseconst):
+        (parseimplementsstatement):
+        (parsetypedef):
+        (parseexception):
+        (parseinterface):
+        (parsecallback):
+        (parsedictionary):
+        (parseenum):
+        (parsedefinitions):
+        (parse):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/parse.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/process.c: Added.
+        (outputnodeastext):
+        (printfqid):
+        (output):
+        (outputchildren):
+        (processfiles):
+        * web-platform-tests/resources/webidl2/test/widlproc/src/process.h: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/Makefile: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/enum.txt: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/test/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/test/widlproc/w3c-import.log: Added.
+        * web-platform-tests/resources/webidl2/w3c-import.log: Added.
+        * web-platform-tests/resources/webiwarning: inexact rename detection was skipped due to too many files.: Added.
+        * web-platform-tests/streams/piping/close-propagation-forward-expected.txt:
+        * web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt:
+        * web-platform-tests/streams/piping/close-propagation-forward.js:
+        (promise_test):
+        * web-platform-tests/streams/piping/flow-control-expected.txt:
+        * web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt:
+        * web-platform-tests/streams/piping/flow-control.js:
+        (promise_test):
+        * web-platform-tests/streams/piping/multiple-propagation-expected.txt:
+        * web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt:
+        * web-platform-tests/streams/piping/multiple-propagation.js:
+        (promise_test.t.string_appeared_here.then):
+        (promise_test.t.const.rs.recordingReadableStream.start):
+        (promise_test.t.return.flushAsyncEvents.then):
+        * web-platform-tests/streams/piping/pipe-through-expected.txt:
+        * web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt:
+        * web-platform-tests/streams/piping/pipe-through.js:
+        (promise_test):
+        * web-platform-tests/streams/readable-byte-streams/general-expected.txt:
+        * web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt:
+        * web-platform-tests/streams/readable-byte-streams/general.js:
+        (test):
+        * web-platform-tests/streams/readable-streams/general-expected.txt:
+        * web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt:
+        * web-platform-tests/streams/readable-streams/general.js:
+        (test.get assert_throws):
+        (test):
+        * web-platform-tests/url/a-element-expected.txt:
+        * web-platform-tests/url/a-element-xhtml-expected.txt:
+        * 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/urltestdata.json:
+        * web-platform-tests/user-timing/clear_all_marks.any-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_all_marks.any.html: Added.
+        * web-platform-tests/user-timing/clear_all_marks.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/clear_all_marks.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_all_marks.worker.html: Added.
+        * web-platform-tests/user-timing/clear_all_measures.any-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_all_measures.any.html: Added.
+        * web-platform-tests/user-timing/clear_all_measures.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/clear_all_measures.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_all_measures.worker.html: Added.
+        * web-platform-tests/user-timing/clear_non_existent_mark.any-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_non_existent_mark.any.html: Added.
+        * web-platform-tests/user-timing/clear_non_existent_mark.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/clear_non_existent_mark.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_non_existent_mark.worker.html: Added.
+        * web-platform-tests/user-timing/clear_non_existent_measure.any-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_non_existent_measure.any.html: Added.
+        * web-platform-tests/user-timing/clear_non_existent_measure.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/clear_non_existent_measure.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_non_existent_measure.worker.html: Added.
+        * web-platform-tests/user-timing/clear_one_mark.any-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_one_mark.any.html: Added.
+        * web-platform-tests/user-timing/clear_one_mark.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/clear_one_mark.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_one_mark.worker.html: Added.
+        * web-platform-tests/user-timing/clear_one_measure.any-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_one_measure.any.html: Added.
+        * web-platform-tests/user-timing/clear_one_measure.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/clear_one_measure.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/clear_one_measure.worker.html: Added.
+        * web-platform-tests/user-timing/entry_type.any-expected.txt: Added.
+        * web-platform-tests/user-timing/entry_type.any.html: Added.
+        * web-platform-tests/user-timing/entry_type.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/entry_type.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/entry_type.worker.html: Added.
+        * web-platform-tests/user-timing/idlharness-expected.txt:
+        * web-platform-tests/user-timing/idlharness.html:
+        * web-platform-tests/user-timing/invoke_with_timing_attributes-expected.txt: Added.
+        * web-platform-tests/user-timing/invoke_with_timing_attributes.html: Added.
+        * web-platform-tests/user-timing/invoke_with_timing_attributes.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/invoke_with_timing_attributes.worker.html: Added.
+        * web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js: Added.
+        (emit_test):
+        (emit_test2):
+        * web-platform-tests/user-timing/invoke_without_parameter-expected.txt: Added.
+        * web-platform-tests/user-timing/invoke_without_parameter.html: Added.
+        * web-platform-tests/user-timing/mark.any-expected.txt: Added.
+        * web-platform-tests/user-timing/mark.any.html: Added.
+        * web-platform-tests/user-timing/mark.any.js: Added.
+        (match_entries):
+        (filter_entries_by_type):
+        (test):
+        (test_mark):
+        * web-platform-tests/user-timing/mark.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/mark.worker.html: Added.
+        * web-platform-tests/user-timing/mark_exceptions-expected.txt: Added.
+        * web-platform-tests/user-timing/mark_exceptions.html: Added.
+        * web-platform-tests/user-timing/measure-expected.txt: Added.
+        * web-platform-tests/user-timing/measure.html: Added.
+        * web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt: Added.
+        * web-platform-tests/user-timing/measure_exceptions_navigation_timing.html: Added.
+        * web-platform-tests/user-timing/measure_navigation_timing-expected.txt: Added.
+        * web-platform-tests/user-timing/measure_navigation_timing.html: Added.
+        * web-platform-tests/user-timing/measure_syntax_err.any-expected.txt: Added.
+        * web-platform-tests/user-timing/measure_syntax_err.any.html: Added.
+        * web-platform-tests/user-timing/measure_syntax_err.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/measure_syntax_err.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/measure_syntax_err.worker.html: Added.
+        * web-platform-tests/user-timing/resources/webperftestharness.js:
+        * web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt:
+        * web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt:
+        * web-platform-tests/user-timing/user_timing_exists.any-expected.txt: Added.
+        * web-platform-tests/user-timing/user_timing_exists.any.html: Added.
+        * web-platform-tests/user-timing/user_timing_exists.any.js: Added.
+        (test):
+        * web-platform-tests/user-timing/user_timing_exists.worker-expected.txt: Added.
+        * web-platform-tests/user-timing/user_timing_exists.worker.html: Added.
+        * web-platform-tests/user-timing/w3c-import.log:
+        * web-platform-tests/w3c-import.log:
+        * web-platform-tests/webrtc/OWNERS:
+        * web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates-expected.txt: Added.
+        * web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html: Added.
+        * web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState-expected.txt: Added.
+        * web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html: Added.
+        * web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize-expected.txt:
+        * web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html:
+        * web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt:
+        * web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html:
+        * web-platform-tests/webrtc/rtcpeerconnection/w3c-import.log:
+
</ins><span class="cx"> 2017-04-07  Ryan Haddad  &lt;ryanhaddad@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Rebaseline another test after r215096.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cresourcesTestRepositories"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/resources/TestRepositories (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/TestRepositories        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/resources/TestRepositories        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,21 +1,8 @@
</span><span class="cx"> [
</span><span class="cx">     {
</span><del>-        &quot;name&quot;: &quot;csswg-test&quot;,
-        &quot;url&quot;: &quot;https://github.com/w3c/csswg-test.git&quot;,
-        &quot;revision&quot;: &quot;d5146115f631a1cc6bc53a4f134d4e2a26fe2fb5&quot;,
-        &quot;paths_to_skip&quot;: [
-            &quot;support&quot;,
-            &quot;tools&quot;,
-            &quot;work-in-progress&quot;
-        ],
-        &quot;paths_to_import&quot;: [
-        ],
-        &quot;import_options&quot;: [&quot;convert_test_harness_links&quot;]
-    },
-    {
</del><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;a5b95cb31914507088a4eda16f7674bbc6f3313f&quot;,
</del><ins>+        &quot;revision&quot;: &quot;23cd07d4685d81024b7440e042f8bbdb33e7ddec&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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/import-expectations.json        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/resources/import-expectations.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,64 +1,4 @@
</span><span class="cx"> {
</span><del>-    &quot;csswg-test/WOFF2-UserAgent&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/compositing-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-align-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-animations-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-backgrounds-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-box-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-break-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-cascade-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-color-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-color-4&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-conditional-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-counter-styles-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-display-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-exclusions-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-flexbox-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-fonts-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-gcpm-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-grid-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-images-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-lists-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-logical-properties-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-masking-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-multicol-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-namespaces-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-namespaces-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-page-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-pseudo-4&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-regions-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-rhythm-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-round-display&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-ruby-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-scoping1&quot;: &quot;import&quot;, 
-    &quot;csswg-test/css-shapes-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-snap-size-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-speech-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-style-attr-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-syntax-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-tables-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-text-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-text-decor-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-transforms-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-transitions-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-transitions-2&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-ui-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-values-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-values-4&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-variables-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css-writing-modes-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/css21&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/cssom-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/cssom-view-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/filters-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/fonts&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/geometry-1&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/mediaqueries-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/reference&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/selectors-3&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/selectors-4&quot;: &quot;skip&quot;, 
-    &quot;csswg-test/vendor-imports&quot;: &quot;skip&quot;, 
</del><span class="cx">     &quot;web-platform-tests/2dcontext&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/2dcontext/transformations/canvas_transformations_reset_001-ref.html&quot;: &quot;import&quot;, 
</span><span class="cx">     &quot;web-platform-tests/2dcontext/transformations/canvas_transformations_reset_001.html&quot;: &quot;import&quot;, 
</span><span class="lines">@@ -110,7 +50,9 @@
</span><span class="cx">     &quot;web-platform-tests/cors&quot;: &quot;import&quot;, 
</span><span class="cx">     &quot;web-platform-tests/css-typed-om&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/css-values&quot;: &quot;skip&quot;, 
</span><ins>+    &quot;web-platform-tests/css/&quot;: &quot;skip&quot;, 
</ins><span class="cx">     &quot;web-platform-tests/css/css-grid-1/&quot;: &quot;import&quot;, 
</span><ins>+    &quot;web-platform-tests/css/css-scoping1&quot;: &quot;import&quot;, 
</ins><span class="cx">     &quot;web-platform-tests/cssom&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/cssom-view&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/custom-elements&quot;: &quot;import&quot;, 
</span><span class="lines">@@ -298,6 +240,7 @@
</span><span class="cx">     &quot;web-platform-tests/service-workers&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/shadow-dom&quot;: &quot;import&quot;, 
</span><span class="cx">     &quot;web-platform-tests/shadow-dom/untriaged&quot;: &quot;skip&quot;, 
</span><ins>+    &quot;web-platform-tests/staticrange&quot;: &quot;skip&quot;, 
</ins><span class="cx">     &quot;web-platform-tests/storage&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/streams/writable-streams&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/subresource-integrity&quot;: &quot;skip&quot;, 
</span><span class="lines">@@ -321,6 +264,7 @@
</span><span class="cx">     &quot;web-platform-tests/webrtc&quot;: &quot;import&quot;, 
</span><span class="cx">     &quot;web-platform-tests/websockets&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/webstorage&quot;: &quot;skip&quot;, 
</span><ins>+    &quot;web-platform-tests/webusb&quot;: &quot;skip&quot;, 
</ins><span class="cx">     &quot;web-platform-tests/webvr&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/webvtt&quot;: &quot;skip&quot;, 
</span><span class="cx">     &quot;web-platform-tests/workers&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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/resource-files.json        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/resources/resource-files.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -195,6 +195,7 @@
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/noreferrer-cross-origin-close-manual.sub.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/noreferrer-cross-origin-window-name.sub.html&quot;,
</span><ins>+        &quot;web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/html/browsers/windows/support-close.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/support-named-null-opener.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/browsers/windows/support-nested-browsing-contexts.html&quot;,
</span><span class="lines">@@ -243,6 +244,7 @@
</span><span class="cx">         &quot;web-platform-tests/html/semantics/forms/form-submission-0/form-data-set-usv-form.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/forms/resetting-a-form/reset-form-event-realm-support.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/forms/the-button-element/button-activate-frame.html&quot;,
</span><ins>+        &quot;web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html&quot;,
</ins><span class="cx">         &quot;web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-different.sub.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-missingheader.sub.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/html/semantics/scripting-1/the-script-element/module/crossorigin-import-same.sub.html&quot;,
</span><span class="lines">@@ -277,4 +279,4 @@
</span><span class="cx">         &quot;web-platform-tests/test_keys_wdspec.html&quot;,
</span><span class="cx">         &quot;web-platform-tests/upgrade-insecure-requests/support/post-origin-to-parent.html&quot;
</span><span class="cx">     ]
</span><del>-}
</del><ins>+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRFEFEpem"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFE.pem (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFE.pem                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFE.pem        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 65278 (0xfefe)
+        Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=web-platform-tests
+        Validity
+            Not Before: Mar 22 16:49:45 2017 GMT
+            Not After : Apr 21 16:49:45 2017 GMT
+        Subject: CN=web-platform-tests
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (2048 bit)
+                Modulus (2048 bit):
+                    00:d9:21:52:23:45:b0:bf:b3:a8:65:b3:50:ea:06:
+                    4a:58:dc:0e:d6:04:ef:66:29:89:3e:29:f9:87:21:
+                    19:86:32:23:10:c9:f9:64:83:1b:f0:60:8f:8a:f1:
+                    09:11:01:bd:18:11:4e:f6:bd:ac:65:e7:19:45:97:
+                    ac:e7:58:d3:7c:c4:79:04:47:04:89:d1:6c:96:f2:
+                    61:74:da:91:af:e9:bd:3e:5a:01:3b:b6:b0:29:91:
+                    68:f4:9f:7a:99:50:87:c2:fe:c0:94:3b:53:d7:16:
+                    a4:dd:67:ef:56:50:3a:5d:e1:e7:11:b4:94:d0:e8:
+                    f7:97:f4:65:8b:51:82:e0:af:c1:ab:59:5d:6a:29:
+                    88:07:76:15:bf:ca:d1:21:a2:72:c8:f0:5f:80:36:
+                    45:4d:b0:d8:f3:82:ec:82:49:f0:dd:1b:5f:58:c7:
+                    57:e2:d2:65:3a:26:07:4c:2b:aa:41:a0:a3:b9:48:
+                    62:75:19:d8:ab:a4:0e:64:38:b6:a5:96:a7:85:64:
+                    02:97:f5:23:1b:e8:5a:47:b8:41:bb:9d:77:9c:06:
+                    b0:ef:ef:47:45:3a:df:2e:20:ce:b2:54:f0:dd:7e:
+                    4c:52:15:e5:38:54:dc:89:f8:f8:e6:82:5b:75:c2:
+                    0c:cc:41:80:f5:e4:0a:d7:80:eb:03:b6:1c:b8:68:
+                    de:03
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            X509v3 Subject Key Identifier: 
+                10:16:98:57:52:0C:20:38:0B:A4:5F:76:6B:E0:09:07:44:01:00:C0
+            X509v3 Authority Key Identifier: 
+                keyid:10:16:98:57:52:0C:20:38:0B:A4:5F:76:6B:E0:09:07:44:01:00:C0
+                DirName:/CN=web-platform-tests
+                serial:FE:FE
+
+            X509v3 Key Usage: 
+                Certificate Sign
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+    Signature Algorithm: sha256WithRSAEncryption
+        d7:6c:3b:bc:33:ea:b2:0b:fc:57:a0:87:af:3c:a0:84:b0:18:
+        75:f4:81:c2:32:0b:71:a6:9f:5d:a1:4f:41:ee:95:be:b5:d4:
+        8a:c4:a2:77:63:f8:0a:74:ed:4a:f9:9a:f1:74:ed:7c:0d:52:
+        cc:d2:ff:25:d1:dc:81:dc:89:5b:1a:13:bf:d7:fd:1a:bf:dd:
+        ac:1d:09:69:1e:66:31:d2:38:f9:53:9f:ce:0d:c7:63:8c:46:
+        42:08:92:cb:e4:a9:bc:95:79:6b:04:7a:94:b0:c1:b4:8a:2a:
+        8c:51:61:43:90:59:2f:b2:79:9b:45:ce:b3:e9:9c:61:18:f2:
+        d1:90:97:c8:7c:db:a9:bf:6f:e4:b3:85:27:4c:c6:a1:da:cf:
+        0d:43:af:25:83:0d:e5:fb:f7:de:54:3d:ac:f9:55:bf:f4:ed:
+        91:ef:4f:1d:68:7a:e3:e1:b8:a6:39:35:88:f1:d4:35:33:8f:
+        82:a0:08:63:c7:b9:b5:37:d2:4c:df:eb:4b:07:40:00:18:90:
+        01:38:55:d6:64:c3:a3:c1:53:17:94:da:ed:b8:02:65:a5:c8:
+        36:27:d8:e1:0a:8c:8a:f3:09:2f:5e:0b:01:d0:7e:6e:da:cd:
+        13:1c:58:0a:7b:a3:47:74:0a:68:32:f5:e3:0f:15:2d:46:57:
+        a1:6b:f3:82
+-----BEGIN CERTIFICATE-----
+MIIDUzCCAjugAwIBAgIDAP7+MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0xNzAzMjIxNjQ5NDVaFw0xNzA0MjExNjQ5NDVa
+MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANkhUiNFsL+zqGWzUOoGSljcDtYE72YpiT4p+YchGYYy
+IxDJ+WSDG/Bgj4rxCREBvRgRTva9rGXnGUWXrOdY03zEeQRHBInRbJbyYXTaka/p
+vT5aATu2sCmRaPSfeplQh8L+wJQ7U9cWpN1n71ZQOl3h5xG0lNDo95f0ZYtRguCv
+watZXWopiAd2Fb/K0SGicsjwX4A2RU2w2POC7IJJ8N0bX1jHV+LSZTomB0wrqkGg
+o7lIYnUZ2KukDmQ4tqWWp4VkApf1IxvoWke4Qbudd5wGsO/vR0U63y4gzrJU8N1+
+TFIV5ThU3In4+OaCW3XCDMxBgPXkCteA6wO2HLho3gMCAwEAAaOBmzCBmDAMBgNV
+HRMEBTADAQH/MB0GA1UdDgQWBBQQFphXUgwgOAukX3Zr4AkHRAEAwDBHBgNVHSME
+QDA+gBQQFphXUgwgOAukX3Zr4AkHRAEAwKEhpB8wHTEbMBkGA1UEAwwSd2ViLXBs
+YXRmb3JtLXRlc3RzggMA/v4wCwYDVR0PBAQDAgIEMBMGA1UdJQQMMAoGCCsGAQUF
+BwMBMA0GCSqGSIb3DQEBCwUAA4IBAQDXbDu8M+qyC/xXoIevPKCEsBh19IHCMgtx
+pp9doU9B7pW+tdSKxKJ3Y/gKdO1K+ZrxdO18DVLM0v8l0dyB3IlbGhO/1/0av92s
+HQlpHmYx0jj5U5/ODcdjjEZCCJLL5Km8lXlrBHqUsMG0iiqMUWFDkFkvsnmbRc6z
+6ZxhGPLRkJfIfNupv2/ks4UnTMah2s8NQ68lgw3l+/feVD2s+VW/9O2R708daHrj
+4bimOTWI8dQ1M4+CoAhjx7m1N9JM3+tLB0AAGJABOFXWZMOjwVMXlNrtuAJlpcg2
+J9jhCoyK8wkvXgsB0H5u2s0THFgKe6NHdApoMvXjDxUtRleha/OC
+-----END CERTIFICATE-----
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRFEFFpem"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFF.pem (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFF.pem                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFF.pem        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 65279 (0xfeff)
+        Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=web-platform-tests
+        Validity
+            Not Before: Mar 22 16:49:45 2017 GMT
+            Not After : Apr 21 16:49:45 2017 GMT
+        Subject: CN=localhost
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (2048 bit)
+                Modulus (2048 bit):
+                    00:c7:08:1a:00:15:56:e8:fb:58:98:bb:89:fd:17:
+                    b0:8b:8d:07:ce:a8:76:56:cb:48:86:40:d1:6d:8e:
+                    c3:de:f2:a3:58:66:39:01:c4:96:5a:57:b4:b1:36:
+                    37:58:8b:46:13:77:c5:46:1e:ed:37:35:6c:7c:2e:
+                    5a:11:68:3e:2b:ab:2f:56:1d:e5:fe:61:09:14:8d:
+                    ba:89:0f:c5:39:8d:dc:2e:28:1e:19:d9:68:37:ba:
+                    79:67:e4:9a:f8:44:96:aa:f6:1d:7e:30:7b:ed:81:
+                    69:70:f6:fd:d8:67:5f:15:ab:b1:0a:80:92:7c:ed:
+                    a2:a7:e3:cb:0b:57:10:d3:2d:a1:4f:d0:7d:89:bc:
+                    a9:6d:48:49:68:97:56:62:5f:99:13:a4:e9:cd:e9:
+                    cf:41:4e:2d:db:3a:da:a8:6c:68:41:60:dc:a3:11:
+                    ac:7f:64:58:2e:33:9c:a0:a5:84:84:32:9f:25:51:
+                    0b:f8:bf:1c:19:e0:bb:88:85:a4:78:fa:d8:7b:1a:
+                    a0:1f:8b:d0:cc:15:fb:15:1d:eb:10:2c:14:dd:0e:
+                    81:2f:7c:8d:00:ce:ab:8c:d9:cd:50:1f:51:7f:97:
+                    c1:ea:1e:a9:e5:99:ec:98:95:e8:5e:ea:90:0f:93:
+                    f5:21:6f:01:5f:31:d2:38:a0:02:18:31:01:8c:7e:
+                    13:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                BB:82:42:CC:70:38:D8:68:C0:1F:02:38:C1:95:07:54:4C:13:C8:37
+            X509v3 Authority Key Identifier: 
+                keyid:10:16:98:57:52:0C:20:38:0B:A4:5F:76:6B:E0:09:07:44:01:00:C0
+
+            X509v3 Key Usage: 
+                Digital Signature, Non Repudiation, Key Encipherment
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+            X509v3 Subject Alternative Name: 
+                DNS:localhost, DNS:www.localhost, DNS:xn--n8j6ds53lwwkrqhv28a.localhost, DNS:xn--lve-6lad.localhost, DNS:www2.localhost, DNS:www1.localhost
+    Signature Algorithm: sha256WithRSAEncryption
+        7e:7c:47:8b:6f:c3:a2:bc:a0:95:27:23:2d:eb:d4:cf:b9:16:
+        00:7a:29:08:0b:65:77:53:61:ec:c1:02:42:61:0a:23:2c:98:
+        3f:32:68:d9:ec:a9:3c:e1:12:f5:92:8a:3b:14:2c:4f:0b:4f:
+        27:2b:35:b0:cc:08:74:d7:8b:dd:d2:a3:c8:88:31:35:b0:ab:
+        eb:69:c3:a6:57:5f:40:ca:06:65:6f:39:d3:11:e2:ec:58:de:
+        e5:fa:1b:60:df:c8:10:2b:6d:48:1a:43:38:7e:96:6f:fc:c1:
+        7f:3e:7b:62:33:ec:5c:ae:ab:bc:c1:67:9c:8d:89:5d:4c:90:
+        1c:a3:92:bd:ea:a4:71:4e:0f:53:c3:da:04:70:8c:44:65:77:
+        03:ef:47:5e:47:3d:e2:a4:6e:2a:2a:8a:76:af:d3:b0:92:6a:
+        ca:b4:25:48:7c:07:28:40:f9:79:7f:18:e1:f4:4a:52:de:78:
+        e6:61:5c:1d:56:ad:3f:4b:17:8b:4d:b1:d9:90:38:24:81:05:
+        fb:77:d1:b6:64:ff:2b:40:67:f2:98:c1:8d:bd:9b:b7:af:c6:
+        50:fe:fa:02:ef:d3:3d:a1:7a:0b:41:3c:08:ea:5f:71:c4:22:
+        a4:cc:f0:c8:8a:ff:58:9c:4d:40:fd:3b:51:ab:95:39:50:93:
+        c5:c4:4e:15
+-----BEGIN CERTIFICATE-----
+MIIDnzCCAoegAwIBAgIDAP7/MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0xNzAzMjIxNjQ5NDVaFw0xNzA0MjExNjQ5NDVa
+MBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAMcIGgAVVuj7WJi7if0XsIuNB86odlbLSIZA0W2Ow97yo1hmOQHEllpX
+tLE2N1iLRhN3xUYe7Tc1bHwuWhFoPiurL1Yd5f5hCRSNuokPxTmN3C4oHhnZaDe6
+eWfkmvhElqr2HX4we+2BaXD2/dhnXxWrsQqAknztoqfjywtXENMtoU/QfYm8qW1I
+SWiXVmJfmROk6c3pz0FOLds62qhsaEFg3KMRrH9kWC4znKClhIQynyVRC/i/HBng
+u4iFpHj62HsaoB+L0MwV+xUd6xAsFN0OgS98jQDOq4zZzVAfUX+XweoeqeWZ7JiV
+6F7qkA+T9SFvAV8x0jigAhgxAYx+ExsCAwEAAaOB8DCB7TAJBgNVHRMEAjAAMB0G
+A1UdDgQWBBS7gkLMcDjYaMAfAjjBlQdUTBPINzAfBgNVHSMEGDAWgBQQFphXUgwg
+OAukX3Zr4AkHRAEAwDALBgNVHQ8EBAMCBeAwEwYDVR0lBAwwCgYIKwYBBQUHAwEw
+fgYDVR0RBHcwdYIJbG9jYWxob3N0gg13d3cubG9jYWxob3N0giF4bi0tbjhqNmRz
+NTNsd3drcnFodjI4YS5sb2NhbGhvc3SCFnhuLS1sdmUtNmxhZC5sb2NhbGhvc3SC
+Dnd3dzIubG9jYWxob3N0gg53d3cxLmxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOC
+AQEAfnxHi2/DoryglScjLevUz7kWAHopCAtld1Nh7MECQmEKIyyYPzJo2eypPOES
+9ZKKOxQsTwtPJys1sMwIdNeL3dKjyIgxNbCr62nDpldfQMoGZW850xHi7Fje5fob
+YN/IECttSBpDOH6Wb/zBfz57YjPsXK6rvMFnnI2JXUyQHKOSveqkcU4PU8PaBHCM
+RGV3A+9HXkc94qRuKiqKdq/TsJJqyrQlSHwHKED5eX8Y4fRKUt545mFcHVatP0sX
+i02x2ZA4JIEF+3fRtmT/K0Bn8pjBjb2bt6/GUP76Au/TPaF6C0E8COpfccQipMzw
+yIr/WJxNQP07UauVOVCTxcROFQ==
+-----END CERTIFICATE-----
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRcacertpem"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cacert.pem (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cacert.pem                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cacert.pem        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 65278 (0xfefe)
+        Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=web-platform-tests
+        Validity
+            Not Before: Mar 22 16:49:45 2017 GMT
+            Not After : Apr 21 16:49:45 2017 GMT
+        Subject: CN=web-platform-tests
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (2048 bit)
+                Modulus (2048 bit):
+                    00:d9:21:52:23:45:b0:bf:b3:a8:65:b3:50:ea:06:
+                    4a:58:dc:0e:d6:04:ef:66:29:89:3e:29:f9:87:21:
+                    19:86:32:23:10:c9:f9:64:83:1b:f0:60:8f:8a:f1:
+                    09:11:01:bd:18:11:4e:f6:bd:ac:65:e7:19:45:97:
+                    ac:e7:58:d3:7c:c4:79:04:47:04:89:d1:6c:96:f2:
+                    61:74:da:91:af:e9:bd:3e:5a:01:3b:b6:b0:29:91:
+                    68:f4:9f:7a:99:50:87:c2:fe:c0:94:3b:53:d7:16:
+                    a4:dd:67:ef:56:50:3a:5d:e1:e7:11:b4:94:d0:e8:
+                    f7:97:f4:65:8b:51:82:e0:af:c1:ab:59:5d:6a:29:
+                    88:07:76:15:bf:ca:d1:21:a2:72:c8:f0:5f:80:36:
+                    45:4d:b0:d8:f3:82:ec:82:49:f0:dd:1b:5f:58:c7:
+                    57:e2:d2:65:3a:26:07:4c:2b:aa:41:a0:a3:b9:48:
+                    62:75:19:d8:ab:a4:0e:64:38:b6:a5:96:a7:85:64:
+                    02:97:f5:23:1b:e8:5a:47:b8:41:bb:9d:77:9c:06:
+                    b0:ef:ef:47:45:3a:df:2e:20:ce:b2:54:f0:dd:7e:
+                    4c:52:15:e5:38:54:dc:89:f8:f8:e6:82:5b:75:c2:
+                    0c:cc:41:80:f5:e4:0a:d7:80:eb:03:b6:1c:b8:68:
+                    de:03
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            X509v3 Subject Key Identifier: 
+                10:16:98:57:52:0C:20:38:0B:A4:5F:76:6B:E0:09:07:44:01:00:C0
+            X509v3 Authority Key Identifier: 
+                keyid:10:16:98:57:52:0C:20:38:0B:A4:5F:76:6B:E0:09:07:44:01:00:C0
+                DirName:/CN=web-platform-tests
+                serial:FE:FE
+
+            X509v3 Key Usage: 
+                Certificate Sign
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+    Signature Algorithm: sha256WithRSAEncryption
+        d7:6c:3b:bc:33:ea:b2:0b:fc:57:a0:87:af:3c:a0:84:b0:18:
+        75:f4:81:c2:32:0b:71:a6:9f:5d:a1:4f:41:ee:95:be:b5:d4:
+        8a:c4:a2:77:63:f8:0a:74:ed:4a:f9:9a:f1:74:ed:7c:0d:52:
+        cc:d2:ff:25:d1:dc:81:dc:89:5b:1a:13:bf:d7:fd:1a:bf:dd:
+        ac:1d:09:69:1e:66:31:d2:38:f9:53:9f:ce:0d:c7:63:8c:46:
+        42:08:92:cb:e4:a9:bc:95:79:6b:04:7a:94:b0:c1:b4:8a:2a:
+        8c:51:61:43:90:59:2f:b2:79:9b:45:ce:b3:e9:9c:61:18:f2:
+        d1:90:97:c8:7c:db:a9:bf:6f:e4:b3:85:27:4c:c6:a1:da:cf:
+        0d:43:af:25:83:0d:e5:fb:f7:de:54:3d:ac:f9:55:bf:f4:ed:
+        91:ef:4f:1d:68:7a:e3:e1:b8:a6:39:35:88:f1:d4:35:33:8f:
+        82:a0:08:63:c7:b9:b5:37:d2:4c:df:eb:4b:07:40:00:18:90:
+        01:38:55:d6:64:c3:a3:c1:53:17:94:da:ed:b8:02:65:a5:c8:
+        36:27:d8:e1:0a:8c:8a:f3:09:2f:5e:0b:01:d0:7e:6e:da:cd:
+        13:1c:58:0a:7b:a3:47:74:0a:68:32:f5:e3:0f:15:2d:46:57:
+        a1:6b:f3:82
+-----BEGIN CERTIFICATE-----
+MIIDUzCCAjugAwIBAgIDAP7+MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0xNzAzMjIxNjQ5NDVaFw0xNzA0MjExNjQ5NDVa
+MB0xGzAZBgNVBAMMEndlYi1wbGF0Zm9ybS10ZXN0czCCASIwDQYJKoZIhvcNAQEB
+BQADggEPADCCAQoCggEBANkhUiNFsL+zqGWzUOoGSljcDtYE72YpiT4p+YchGYYy
+IxDJ+WSDG/Bgj4rxCREBvRgRTva9rGXnGUWXrOdY03zEeQRHBInRbJbyYXTaka/p
+vT5aATu2sCmRaPSfeplQh8L+wJQ7U9cWpN1n71ZQOl3h5xG0lNDo95f0ZYtRguCv
+watZXWopiAd2Fb/K0SGicsjwX4A2RU2w2POC7IJJ8N0bX1jHV+LSZTomB0wrqkGg
+o7lIYnUZ2KukDmQ4tqWWp4VkApf1IxvoWke4Qbudd5wGsO/vR0U63y4gzrJU8N1+
+TFIV5ThU3In4+OaCW3XCDMxBgPXkCteA6wO2HLho3gMCAwEAAaOBmzCBmDAMBgNV
+HRMEBTADAQH/MB0GA1UdDgQWBBQQFphXUgwgOAukX3Zr4AkHRAEAwDBHBgNVHSME
+QDA+gBQQFphXUgwgOAukX3Zr4AkHRAEAwKEhpB8wHTEbMBkGA1UEAwwSd2ViLXBs
+YXRmb3JtLXRlc3RzggMA/v4wCwYDVR0PBAQDAgIEMBMGA1UdJQQMMAoGCCsGAQUF
+BwMBMA0GCSqGSIb3DQEBCwUAA4IBAQDXbDu8M+qyC/xXoIevPKCEsBh19IHCMgtx
+pp9doU9B7pW+tdSKxKJ3Y/gKdO1K+ZrxdO18DVLM0v8l0dyB3IlbGhO/1/0av92s
+HQlpHmYx0jj5U5/ODcdjjEZCCJLL5Km8lXlrBHqUsMG0iiqMUWFDkFkvsnmbRc6z
+6ZxhGPLRkJfIfNupv2/ks4UnTMah2s8NQ68lgw3l+/feVD2s+VW/9O2R708daHrj
+4bimOTWI8dQ1M4+CoAhjx7m1N9JM3+tLB0AAGJABOFXWZMOjwVMXlNrtuAJlpcg2
+J9jhCoyK8wkvXgsB0H5u2s0THFgKe6NHdApoMvXjDxUtRleha/OC
+-----END CERTIFICATE-----
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRcakeypem"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cakey.pem (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cakey.pem                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cakey.pem        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,5F2A93194356E6B0
+
+l1mKFlUzVmRAt6+4YIwkCIou/yl6QpB/i9QWmvlJJ468Fp+L0sZVWfuoCKQ9Gu1r
+5W+R4K+zzgGyRIIbf/OYBScapUzbZhaKbzYJCqeoXe0jOi1XkYT9uwDKlYZ3ACxS
+xAOkp6H+nLup+hdqriuSf5+50FBW9deGBJA0pOIl/EvaeE1Y3jJl4VZcG3TyU8Rr
+5do0Kw5QCvXWoevFcj3CFtX8OZzuwUaMX4tMruMabKL7rcwLonHy8wNh2xBUeh0L
+f99I/pXpuLniYyjEFPDJzo5CkDPXUxspIKq+93XgZ5w+NmK/wPtmB2fWr2kva0fr
+dFi6O1Q768YColS5S46KSAVDdmvsMsK45WOEAk7qJQPO6PhKWA80zp+A5v6C7DLz
+GwD4R8SrPurKBB//QCiTKhFzcJ0vbzKOXNlAmIYjrp8ZOwSAxuXZ6ZsFkXfdj9EX
+tu0GifH9/i4QMhXdNzaGazdZJ+z6/aN7TzznDgkHPcIEuhAs1ulH94da+grGzdqD
+pCG4vx88vtNNNiWpg2/0D1mLfi3lqliVdU7pk3zgeUKbGttdChqfGaTe+JNqp6Ru
+DrPrkRa/pY+9gkd0cLuASoGqo0JIRjnWGoKTJz6MirNj/vEE/VUaXFtw53IsjZdB
+bMf9opeEFE2nKhdEzso2W3fyWYEZZNb6lxz+GvvQAz9IXV+DSWJHPGU57VgIhsH/
+wwQWjB+gmyA6xtGfMiDrIw/ZRo1eBW+B6rZCCjhwjZXWPnDuTfY4LPcFwZIhNrJz
+zQ30CWI0Z9vIeQnpv9kxFxC+t2k6coDH8Ny6+VUIq+cWT/klhTfCcq8JaV8Hj0ad
+EMYTGKon6QkjPOj4kzc6NH5gLQvd7GVBzg9KRF2e3jMrNeMwyFyY7Xh65yMiFEBE
+BwLVSXgoqkwAFjLNuFrZqT0S0HJ9jS+NRebzeCQiFgUD9Wmav6BsFzmao/pP+pNl
+j6fxSyzUmZzg7LCUbra7QIRwi0zU6T9Ku+gk0jAX854Ej1Av8Y/pZE84F4zl7+JQ
+vaXrPjMdXwCBAMdwaCUTjG48dSLH47OGtIi5y3SPY9LVNmf3q7cgqnW1VGax6DOw
+ug7pzpokNTXKLU3MknSV8ef2ZcAiCg/9748ztqcE4o2shL4irmzmoGXI63BhbseQ
+YNxv+89j60kqfUzbJ4lY0lvWGn4mEvFa6TwUCUlA+uMtxIdeGxzj+qdi3YvIhmvM
+FO+cWFe/rSFeJlaZ7+wtcEvI604heWwXjGcGSUN9kykxQ9SH4g0MJA8tdb/MEf0A
+xitKUvHQng0cJyi4tMkC7I2NvBNfwJPvzlUvj8NTQ7NNJxAf+eA/yMntznuZxts/
+AJG4DlMYzbjranPVNCx2c83pQfY9dwXBP1S6ATPnH/nKiJyj6iZwYIyqa5/VLlrJ
+QOx+NUXrV33l0DyLC4qu30s+C5DfaH2xpB2PJsAoqpEnTyqXKBS3KKlo2SNQr3gD
+OMXqeWsxbiFFwJd0et9KPOFYGV+9C/7PZIUYTg9i9TlABX2YHv71cHhUTBtLYJF8
+NZJcr5rr4UsLgfVQ7ULJupoDbtiRObGMcoxCwCMntkhWVStRSMhU4Q==
+-----END RSA PRIVATE KEY-----
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+V        170421164945Z                FEFE        unknown        /CN=web-platform-tests
+V        170421164945Z                FEFF        unknown        /CN=localhost
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxtattr"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+unique_subject = yes
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxtattrold"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr.old (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr.old                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr.old        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+unique_subject = yes
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRindextxtold"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.old (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.old                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.old        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+V        170421164945Z                FEFE        unknown        /CN=web-platform-tests
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRlocalhostkey"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.key (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.key                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.key        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+-----BEGIN RSA PRIVATE KEY-----
+MIIEpAIBAAKCAQEAxwgaABVW6PtYmLuJ/Rewi40Hzqh2VstIhkDRbY7D3vKjWGY5
+AcSWWle0sTY3WItGE3fFRh7tNzVsfC5aEWg+K6svVh3l/mEJFI26iQ/FOY3cLige
+GdloN7p5Z+Sa+ESWqvYdfjB77YFpcPb92GdfFauxCoCSfO2ip+PLC1cQ0y2hT9B9
+ibypbUhJaJdWYl+ZE6TpzenPQU4t2zraqGxoQWDcoxGsf2RYLjOcoKWEhDKfJVEL
++L8cGeC7iIWkePrYexqgH4vQzBX7FR3rECwU3Q6BL3yNAM6rjNnNUB9Rf5fB6h6p
+5ZnsmJXoXuqQD5P1IW8BXzHSOKACGDEBjH4TGwIDAQABAoIBADEXkXo1yUMcRAUg
+NPAFeNljBur1aIMODyx2LnIMhcmnJZ03UZZbDA7qlTokulAPwlAo+bLLDA3TEpgq
+wrKKeNNCnSFrrIArJRc5winuhuIkWIvV/1623lroluuGWqckG9m9bRbkFJ1Hj196
+vLA1ByIMQFXr0rYX00gACuQYLKE5r4xLTe8BfESfrOl6fcVil95iLpPiBjqGNo3S
+ymK+hK3vIRkXKE4EJ/8EOqfslJcME2NMywWyWsegP8z3u5Iz6+dqjz7FegCKoEqh
+8WTgc+3VucvBuz3texvQQ+Rg24HhmNA7j5vsKlnlX53NT1gNqkcpT74CG9kkTO6D
+X+IvNxkCgYEA7lwpslBkxperRFefBTcrVAprxGbKGuxk2aRi9J7cGG/01i83zNkR
+ich0ZowHx6iOV45SO91zLAFMLnqGloUEy8pVbx3yJJQefLp0VuFNSZBGoHEE59G6
+9OJxMkGySblbDDVxj+1iHjHotNcIZQ5zNobGXoKyip76bOimen+lk2UCgYEA1cLY
+X/kaY0zE+6w16vX0miiYSyP/mgi64PRKylirYsR0awsusEuWeefvzaq2ZzQIE1ay
+EDCfZ85KOQGGPmX+SG/dPKQWzU0ZSqzJqd3J9MWKfCRJ9NkKarVQbX/2iseQ1s6g
+ZyZisAqLCJAmwR1VONmp33qlCV+2v6GHWpqE5H8CgYEAzR8GyuqgLr6qpj95G3Xk
+lYf6QaPrXMv95cWvWq+y3FzMJ92ueVx72URl1zG+KDWHeRWC8v2ZdU8Qjhbm53VF
+MVLHvr3YeV319oRGRdXROvMrtDpObGhyKPcNTqB2mzclgRYkyiUQgMeWaLl8Aesz
+fsLwxrhWiTBSdZKoYVaj2HkCgYEAmChb0OUGTYzF4seQkbGF7X3b+hCjzsdMDviV
+jDdVt7ZTkCajk0Ya1KeuYN2VfRziarGZikCyFzgWSUG2hxAe0v0dpB7BRF4PFMKt
+wcZoDV3X18oVAr7D1XU+zNL7cYngpabrMsF2Gg1HLk895tS0ZwU5ECTC+UsyUHHw
+YSQAWI0CgYBX93FSIJy+cZgyHwHaYf6Qk5GT44G79VFabtCeK4LLo2NGSegyXn1E
+VvCfIpYrZtvHa2WKY0nuCq9+aN0FFOvUrwEoNygCXz6BrXOiuLDlMfT6apaLDF8I
+dn3stRTQC0tA+NrVf90V4ntlLKl4BQ80UxI9FDWz7gcRycIm0DRnow==
+-----END RSA PRIVATE KEY-----
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRlocalhostpem"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.pem (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.pem                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.pem        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number: 65279 (0xfeff)
+        Signature Algorithm: sha256WithRSAEncryption
+        Issuer: CN=web-platform-tests
+        Validity
+            Not Before: Mar 22 16:49:45 2017 GMT
+            Not After : Apr 21 16:49:45 2017 GMT
+        Subject: CN=localhost
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (2048 bit)
+                Modulus (2048 bit):
+                    00:c7:08:1a:00:15:56:e8:fb:58:98:bb:89:fd:17:
+                    b0:8b:8d:07:ce:a8:76:56:cb:48:86:40:d1:6d:8e:
+                    c3:de:f2:a3:58:66:39:01:c4:96:5a:57:b4:b1:36:
+                    37:58:8b:46:13:77:c5:46:1e:ed:37:35:6c:7c:2e:
+                    5a:11:68:3e:2b:ab:2f:56:1d:e5:fe:61:09:14:8d:
+                    ba:89:0f:c5:39:8d:dc:2e:28:1e:19:d9:68:37:ba:
+                    79:67:e4:9a:f8:44:96:aa:f6:1d:7e:30:7b:ed:81:
+                    69:70:f6:fd:d8:67:5f:15:ab:b1:0a:80:92:7c:ed:
+                    a2:a7:e3:cb:0b:57:10:d3:2d:a1:4f:d0:7d:89:bc:
+                    a9:6d:48:49:68:97:56:62:5f:99:13:a4:e9:cd:e9:
+                    cf:41:4e:2d:db:3a:da:a8:6c:68:41:60:dc:a3:11:
+                    ac:7f:64:58:2e:33:9c:a0:a5:84:84:32:9f:25:51:
+                    0b:f8:bf:1c:19:e0:bb:88:85:a4:78:fa:d8:7b:1a:
+                    a0:1f:8b:d0:cc:15:fb:15:1d:eb:10:2c:14:dd:0e:
+                    81:2f:7c:8d:00:ce:ab:8c:d9:cd:50:1f:51:7f:97:
+                    c1:ea:1e:a9:e5:99:ec:98:95:e8:5e:ea:90:0f:93:
+                    f5:21:6f:01:5f:31:d2:38:a0:02:18:31:01:8c:7e:
+                    13:1b
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:FALSE
+            X509v3 Subject Key Identifier: 
+                BB:82:42:CC:70:38:D8:68:C0:1F:02:38:C1:95:07:54:4C:13:C8:37
+            X509v3 Authority Key Identifier: 
+                keyid:10:16:98:57:52:0C:20:38:0B:A4:5F:76:6B:E0:09:07:44:01:00:C0
+
+            X509v3 Key Usage: 
+                Digital Signature, Non Repudiation, Key Encipherment
+            X509v3 Extended Key Usage: 
+                TLS Web Server Authentication
+            X509v3 Subject Alternative Name: 
+                DNS:localhost, DNS:www.localhost, DNS:xn--n8j6ds53lwwkrqhv28a.localhost, DNS:xn--lve-6lad.localhost, DNS:www2.localhost, DNS:www1.localhost
+    Signature Algorithm: sha256WithRSAEncryption
+        7e:7c:47:8b:6f:c3:a2:bc:a0:95:27:23:2d:eb:d4:cf:b9:16:
+        00:7a:29:08:0b:65:77:53:61:ec:c1:02:42:61:0a:23:2c:98:
+        3f:32:68:d9:ec:a9:3c:e1:12:f5:92:8a:3b:14:2c:4f:0b:4f:
+        27:2b:35:b0:cc:08:74:d7:8b:dd:d2:a3:c8:88:31:35:b0:ab:
+        eb:69:c3:a6:57:5f:40:ca:06:65:6f:39:d3:11:e2:ec:58:de:
+        e5:fa:1b:60:df:c8:10:2b:6d:48:1a:43:38:7e:96:6f:fc:c1:
+        7f:3e:7b:62:33:ec:5c:ae:ab:bc:c1:67:9c:8d:89:5d:4c:90:
+        1c:a3:92:bd:ea:a4:71:4e:0f:53:c3:da:04:70:8c:44:65:77:
+        03:ef:47:5e:47:3d:e2:a4:6e:2a:2a:8a:76:af:d3:b0:92:6a:
+        ca:b4:25:48:7c:07:28:40:f9:79:7f:18:e1:f4:4a:52:de:78:
+        e6:61:5c:1d:56:ad:3f:4b:17:8b:4d:b1:d9:90:38:24:81:05:
+        fb:77:d1:b6:64:ff:2b:40:67:f2:98:c1:8d:bd:9b:b7:af:c6:
+        50:fe:fa:02:ef:d3:3d:a1:7a:0b:41:3c:08:ea:5f:71:c4:22:
+        a4:cc:f0:c8:8a:ff:58:9c:4d:40:fd:3b:51:ab:95:39:50:93:
+        c5:c4:4e:15
+-----BEGIN CERTIFICATE-----
+MIIDnzCCAoegAwIBAgIDAP7/MA0GCSqGSIb3DQEBCwUAMB0xGzAZBgNVBAMMEndl
+Yi1wbGF0Zm9ybS10ZXN0czAeFw0xNzAzMjIxNjQ5NDVaFw0xNzA0MjExNjQ5NDVa
+MBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBAMcIGgAVVuj7WJi7if0XsIuNB86odlbLSIZA0W2Ow97yo1hmOQHEllpX
+tLE2N1iLRhN3xUYe7Tc1bHwuWhFoPiurL1Yd5f5hCRSNuokPxTmN3C4oHhnZaDe6
+eWfkmvhElqr2HX4we+2BaXD2/dhnXxWrsQqAknztoqfjywtXENMtoU/QfYm8qW1I
+SWiXVmJfmROk6c3pz0FOLds62qhsaEFg3KMRrH9kWC4znKClhIQynyVRC/i/HBng
+u4iFpHj62HsaoB+L0MwV+xUd6xAsFN0OgS98jQDOq4zZzVAfUX+XweoeqeWZ7JiV
+6F7qkA+T9SFvAV8x0jigAhgxAYx+ExsCAwEAAaOB8DCB7TAJBgNVHRMEAjAAMB0G
+A1UdDgQWBBS7gkLMcDjYaMAfAjjBlQdUTBPINzAfBgNVHSMEGDAWgBQQFphXUgwg
+OAukX3Zr4AkHRAEAwDALBgNVHQ8EBAMCBeAwEwYDVR0lBAwwCgYIKwYBBQUHAwEw
+fgYDVR0RBHcwdYIJbG9jYWxob3N0gg13d3cubG9jYWxob3N0giF4bi0tbjhqNmRz
+NTNsd3drcnFodjI4YS5sb2NhbGhvc3SCFnhuLS1sdmUtNmxhZC5sb2NhbGhvc3SC
+Dnd3dzIubG9jYWxob3N0gg53d3cxLmxvY2FsaG9zdDANBgkqhkiG9w0BAQsFAAOC
+AQEAfnxHi2/DoryglScjLevUz7kWAHopCAtld1Nh7MECQmEKIyyYPzJo2eypPOES
+9ZKKOxQsTwtPJys1sMwIdNeL3dKjyIgxNbCr62nDpldfQMoGZW850xHi7Fje5fob
+YN/IECttSBpDOH6Wb/zBfz57YjPsXK6rvMFnnI2JXUyQHKOSveqkcU4PU8PaBHCM
+RGV3A+9HXkc94qRuKiqKdq/TsJJqyrQlSHwHKED5eX8Y4fRKUt545mFcHVatP0sX
+i02x2ZA4JIEF+3fRtmT/K0Bn8pjBjb2bt6/GUP76Au/TPaF6C0E8COpfccQipMzw
+yIr/WJxNQP07UauVOVCTxcROFQ==
+-----END CERTIFICATE-----
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRserial"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+FF00
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRserialold"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial.old (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial.old                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial.old        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+FEFF
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCERTS_DIRw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</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/%CERTS_DIR%/FEFE.pem
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/FEFF.pem
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cacert.pem
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/cakey.pem
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.attr.old
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/index.txt.old
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.key
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/localhost.pem
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial
+/LayoutTests/imported/w3c/web-platform-tests/%CERTS_DIR%/serial.old
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsCONTRIBUTINGmd"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/CONTRIBUTING.md (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/CONTRIBUTING.md        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/CONTRIBUTING.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -27,3 +27,8 @@
</span><span class="cx"> suitable for any purpose. We make no representations, express or implied, that
</span><span class="cx"> the content of this repository or the use thereof indicates conformance to a
</span><span class="cx"> specification. All content is provided as-is to help reach interoperability.
</span><ins>+
+Documentation
+-------------
+
+See [web-platform-tests.org](http://web-platform-tests.org/).
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordirectionindexkeyrangehtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><ins>+&lt;meta charset=utf-8&gt;
</ins><span class="cx"> &lt;title&gt;IDBCursor direction - index with keyrange&lt;/title&gt;
</span><span class="cx"> &lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
</span><span class="cx"> &lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbcursordirectionobjectstorekeyrangehtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +1,5 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><ins>+&lt;meta charset=utf-8&gt;
</ins><span class="cx"> &lt;title&gt;IDBCursor direction - object store with keyrange&lt;/title&gt;
</span><span class="cx"> &lt;link rel=&quot;author&quot; href=&quot;mailto:odinho@opera.com&quot; title=&quot;Odin Hørthe Omdal&quot;&gt;
</span><span class="cx"> &lt;link rel=help href=&quot;http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#cursor-iteration-operation&quot;&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasetransactionexceptionorderexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError 
</span><span class="cx"> PASS IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError 
</span><del>-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; {
</del><ins>+FAIL IDBDatabase.transaction exception order: NotFoundError vs. TypeError assert_throws: &quot;No such store&quot; check (NotFoundError) should precede &quot;invalid mode&quot; check (TypeError) function &quot;() =&gt; {
</ins><span class="cx">       db.transaction('no-such-store', 'versionchange');
</span><span class="cx">     }&quot; threw object &quot;TypeError: Type error&quot; that is not a DOMException NotFoundError: property &quot;code&quot; is equal to undefined, expected 8
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabasetransactionexceptionorderhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase-transaction-exception-order.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -45,10 +45,10 @@
</span><span class="cx">     assert_throws('NotFoundError', () =&gt; {
</span><span class="cx">       db.transaction('no-such-store', 'versionchange');
</span><span class="cx">     }, '&quot;No such store&quot; check (NotFoundError) should precede ' +
</span><del>-       '&quot;invalid mode&quot; check (InvalidAccessError)');
</del><ins>+       '&quot;invalid mode&quot; check (TypeError)');
</ins><span class="cx">     t.done();
</span><span class="cx">   },
</span><del>-  'IDBDatabase.transaction exception order: NotFoundError vs. InvalidAccessError'
</del><ins>+  'IDBDatabase.transaction exception order: NotFoundError vs. TypeError'
</ins><span class="cx"> );
</span><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbdatabase_createObjectStore9invalidparametershtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -7,11 +7,11 @@
</span><span class="cx"> &lt;script src=support.js&gt;&lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx"> &lt;script&gt;
</span><del>-    function invalid_optionalParameters(desc, params) {
</del><ins>+    function invalid_optionalParameters(desc, params, exception = &quot;InvalidAccessError&quot;) {
</ins><span class="cx">         var t = async_test(document.title + &quot; - &quot; + desc);
</span><span class="cx"> 
</span><span class="cx">         createdb(t).onupgradeneeded = function(e) {
</span><del>-            assert_throws(null, function() {
</del><ins>+            assert_throws(exception, function() {
</ins><span class="cx">                 e.target.result.createObjectStore(&quot;store&quot;, params);
</span><span class="cx">             });
</span><span class="cx"> 
</span><span class="lines">@@ -20,9 +20,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     invalid_optionalParameters(&quot;autoInc and empty keyPath&quot;, {autoIncrement: true, keyPath: &quot;&quot;});
</span><del>-    invalid_optionalParameters(&quot;autoInc and keyPath array&quot;, {autoIncrement: true, keyPath: []});
</del><ins>+    invalid_optionalParameters(&quot;autoInc and keyPath array&quot;, {autoIncrement: true, keyPath: []}, &quot;SyntaxError&quot;);
</ins><span class="cx">     invalid_optionalParameters(&quot;autoInc and keyPath array 2&quot;, {autoIncrement: true, keyPath: [&quot;hey&quot;]});
</span><del>-    invalid_optionalParameters(&quot;autoInc and keyPath object&quot;, {autoIncrement: true, keyPath: {a:&quot;hey&quot;, b:2}});
</del><ins>+    invalid_optionalParameters(&quot;autoInc and keyPath object&quot;, {autoIncrement: true, keyPath: {a:&quot;hey&quot;, b:2}}, &quot;SyntaxError&quot;);
</ins><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_createIndex15autoincrementexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Explicit Primary Key 
+PASS Auto-Increment Primary Key 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_createIndex15autoincrementhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;IDBObjectStore.createIndex() - AutoIncrement in Compound Index&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;
+  indexeddb_test(
+    function(t, db, txn) {
+      // No auto-increment
+      var store = db.createObjectStore(&quot;Store1&quot;, {keyPath: &quot;id&quot;});
+      store.createIndex(&quot;CompoundKey&quot;, [&quot;num&quot;, &quot;id&quot;]);
+
+      // Add data
+      store.put({id: 1, num: 100});
+    },
+    function(t, db) {
+      var store = db.transaction(&quot;Store1&quot;, &quot;readwrite&quot;).objectStore(&quot;Store1&quot;);
+
+      store.openCursor().onsuccess = t.step_func(function(e) {
+        var item = e.target.result.value;
+        store.index(&quot;CompoundKey&quot;).get([item.num, item.id]).onsuccess = t.step_func(function(e) {
+          assert_equals(e.target.result ? e.target.result.num : null, 100, 'Expected 100.');
+          t.done();
+        });
+      });
+    },
+    &quot;Explicit Primary Key&quot;
+  );
+
+  indexeddb_test(
+    function(t, db, txn) {
+      // Auto-increment
+      var store = db.createObjectStore(&quot;Store2&quot;, {keyPath: &quot;id&quot;, autoIncrement: true});
+      store.createIndex(&quot;CompoundKey&quot;, [&quot;num&quot;, &quot;id&quot;]);
+
+      // Add data
+      store.put({num: 100});
+    },
+    function(t, db) {
+      var store = db.transaction(&quot;Store2&quot;, &quot;readwrite&quot;).objectStore(&quot;Store2&quot;);
+      store.openCursor().onsuccess = t.step_func(function(e) {
+        var item = e.target.result.value;
+        store.index(&quot;CompoundKey&quot;).get([item.num, item.id]).onsuccess = t.step_func(function(e) {
+          assert_equals(e.target.result ? e.target.result.num : null, 100, 'Expected 100.');
+          t.done();
+        });
+      });
+    },
+    &quot;Auto-Increment Primary Key&quot;
+  );
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBidbobjectstore_deletedhtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_deleted.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -28,16 +28,17 @@
</span><span class="cx">         db.deleteObjectStore(&quot;store&quot;);
</span><span class="cx">         assert_equals(db.objectStoreNames.length, 0, &quot;objectStoreNames.length after delete&quot;);
</span><span class="cx"> 
</span><del>-        assert_throws(null, function() { objStore.add(2); });
-        assert_throws(null, function() { objStore.put(3); });
-        assert_throws(null, function() { objStore.get(1); });
-        assert_throws(null, function() { objStore.clear(); });
-        assert_throws(null, function() { objStore.count(); });
-        assert_throws(null, function() { objStore.delete(1); });
-        assert_throws(null, function() { objStore.openCursor(); });
-        assert_throws(null, function() { objStore.index(&quot;idx&quot;); });
-        assert_throws(null, function() { objStore.deleteIndex(&quot;idx&quot;); });
-        assert_throws(null, function() { objStore.createIndex(&quot;idx2&quot;, &quot;a&quot;); });
</del><ins>+        const exc = &quot;InvalidStateError&quot;
+        assert_throws(exc, function() { objStore.add(2); });
+        assert_throws(exc, function() { objStore.put(3); });
+        assert_throws(exc, function() { objStore.get(1); });
+        assert_throws(exc, function() { objStore.clear(); });
+        assert_throws(exc, function() { objStore.count(); });
+        assert_throws(exc, function() { objStore.delete(1); });
+        assert_throws(exc, function() { objStore.openCursor(); });
+        assert_throws(exc, function() { objStore.index(&quot;idx&quot;); });
+        assert_throws(exc, function() { objStore.deleteIndex(&quot;idx&quot;); });
+        assert_throws(exc, function() { objStore.createIndex(&quot;idx2&quot;, &quot;a&quot;); });
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     open_rq.onsuccess = function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBinterleavedcursorsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS 1 cursors 
+PASS 10 cursors 
+PASS 100 cursors 
+PASS 500 cursors 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBinterleavedcursorshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,196 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;meta name=&quot;timeout&quot; content=&quot;long&quot;&gt;
+&lt;title&gt;IndexedDB: Interleaved iteration of multiple cursors&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;pwnall@chromium.org&quot; title=&quot;Victor Costan&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-promises.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+// Number of objects that each iterator goes over.
+const itemCount = 10;
+
+// Ratio of small objects to large objects.
+const largeObjectRatio = 5;
+
+// Size of large objects. This should exceed the size of a block in the storage
+// method underlying the browser's IndexedDB implementation. For example, this
+// needs to exceed the LevelDB block size on Chrome, and the SQLite block size
+// on Firefox.
+const largeObjectSize = 48 * 1024;
+
+function objectKey(cursorIndex, itemIndex) {
+  return `${cursorIndex}-key-${itemIndex}`;
+}
+
+function objectValue(cursorIndex, itemIndex) {
+  if ((cursorIndex * itemCount + itemIndex) % largeObjectRatio === 0) {
+    // We use a typed array (as opposed to a string) because IndexedDB
+    // implementations may serialize strings using UTF-8 or UTF-16, yielding
+    // larger IndexedDB entries than we'd expect. It's very unlikely that an
+    // IndexedDB implementation would use anything other than the raw buffer to
+    // serialize a typed array.
+    const buffer = new Uint8Array(largeObjectSize);
+
+    // Some IndexedDB implementations, like LevelDB, compress their data blocks
+    // before storing them to disk. We use a simple 32-bit xorshift PRNG, which
+    // should be sufficient to foil any fast generic-purpose compression scheme.
+
+    // 32-bit xorshift - the seed can't be zero
+    let state = 1000 + (cursorIndex * itemCount + itemIndex);
+
+    for (let i = 0; i &lt; largeObjectSize; ++i) {
+      state ^= state &lt;&lt; 13;
+      state ^= state &gt;&gt; 17;
+      state ^= state &lt;&lt; 5;
+      buffer[i] = state &amp; 0xff;
+    }
+
+    return buffer;
+  }
+  return [cursorIndex, 'small', itemIndex];
+}
+
+// Writes the objects to be read by one cursor. Returns a promise that resolves
+// when the write completes.
+//
+// We want to avoid creating a large transaction, because that is outside the
+// test's scope, and it's a bad practice. So we break up the writes across
+// multiple transactions. For simplicity, each transaction writes all the
+// objects that will be read by a cursor.
+function writeCursorObjects(database, cursorIndex) {
+  return new Promise((resolve, reject) =&gt; {
+    const transaction = database.transaction('cache', 'readwrite');
+    transaction.onabort = () =&gt; { reject(transaction.error); };
+
+    const store = transaction.objectStore('cache');
+    for (let i = 0; i &lt; itemCount; ++i) {
+      store.put({
+          key: objectKey(cursorIndex, i), value: objectValue(cursorIndex, i)});
+    }
+    transaction.oncomplete = resolve;
+  });
+}
+
+// Returns a promise that resolves when the store has been populated.
+function populateTestStore(testCase, database, cursorCount) {
+  let promiseChain = Promise.resolve();
+
+  for (let i = 0; i &lt; cursorCount; ++i)
+    promiseChain = promiseChain.then(() =&gt; writeCursorObjects(database, i));
+
+  return promiseChain;
+}
+
+// Reads cursors in an interleaved fashion, as shown below.
+//
+// Given N cursors, each of which points to the beginning of a K-item sequence,
+// the following accesses will be made.
+//
+// OC(i)    = open cursor i
+// RD(i, j) = read result of cursor i, which should be at item j
+// CC(i)    = continue cursor i
+// |        = wait for onsuccess on the previous OC or CC
+//
+// OC(1)            | RD(1, 1) OC(2) | RD(2, 1) OC(3) | ... | RD(n-1, 1) CC(n) |
+// RD(n, 1)   CC(1) | RD(1, 2) CC(2) | RD(2, 2) CC(3) | ... | RD(n-1, 2) CC(n) |
+// RD(n, 2)   CC(1) | RD(1, 3) CC(2) | RD(2, 3) CC(3) | ... | RD(n-1, 3) CC(n) |
+// ...
+// RD(n, k-1) CC(1) | RD(1, k) CC(2) | RD(2, k) CC(3) | ... | RD(n-1, k) CC(n) |
+// RD(n, k)           done
+function interleaveCursors(testCase, store, cursorCount) {
+  return new Promise((resolve, reject) =&gt; {
+    // The cursors used for iteration are stored here so each cursor's onsuccess
+    // handler can call continue() on the next cursor.
+    const cursors = [];
+
+    // The results of IDBObjectStore.openCursor() calls are stored here so we
+    // we can change the requests' onsuccess handler after every
+    // IDBCursor.continue() call.
+    const requests = [];
+
+    const checkCursorState = (cursorIndex, itemIndex) =&gt; {
+      const cursor = cursors[cursorIndex];
+      assert_equals(cursor.key, objectKey(cursorIndex, itemIndex));
+      assert_equals(cursor.value.key, objectKey(cursorIndex, itemIndex));
+      assert_equals(
+          cursor.value.value.join('-'),
+          objectValue(cursorIndex, itemIndex).join('-'));
+    };
+
+    const openCursor = (cursorIndex, callback) =&gt; {
+      const request = store.openCursor(
+          IDBKeyRange.lowerBound(objectKey(cursorIndex, 0)));
+      requests[cursorIndex] = request;
+
+      request.onsuccess = testCase.step_func(() =&gt; {
+        const cursor = request.result;
+        cursors[cursorIndex] = cursor;
+        checkCursorState(cursorIndex, 0);
+        callback();
+      });
+      request.onerror = event =&gt; reject(request.error);
+    };
+
+    const readItemFromCursor = (cursorIndex, itemIndex, callback) =&gt; {
+      const request = requests[cursorIndex];
+      request.onsuccess = testCase.step_func(() =&gt; {
+        const cursor = request.result;
+        cursors[cursorIndex] = cursor;
+        checkCursorState(cursorIndex, itemIndex);
+        callback();
+      });
+
+      const cursor = cursors[cursorIndex];
+      cursor.continue();
+    };
+
+    // We open all the cursors one at a time, then cycle through the cursors and
+    // call continue() on each of them. This access pattern causes maximal
+    // trashing to an LRU cursor cache. Eviction scheme aside, any cache will
+    // have to evict some cursors, and this access pattern verifies that the
+    // cache correctly restores the state of evicted cursors.
+    const steps = [];
+    for (let cursorIndex = 0; cursorIndex &lt; cursorCount; ++cursorIndex)
+      steps.push(openCursor.bind(null, cursorIndex));
+    for (let itemIndex = 1; itemIndex &lt; itemCount; ++itemIndex) {
+      for (let cursorIndex = 0; cursorIndex &lt; cursorCount; ++cursorIndex)
+        steps.push(readItemFromCursor.bind(null, cursorIndex, itemIndex));
+    }
+
+    const runStep = (stepIndex) =&gt; {
+      if (stepIndex === steps.length) {
+        resolve();
+        return;
+      }
+      steps[stepIndex](() =&gt; { runStep(stepIndex + 1); });
+    };
+    runStep(0);
+  });
+}
+
+for (let cursorCount of [1, 10, 100, 500]) {
+  promise_test(testCase =&gt; {
+    return createDatabase(testCase, (database, transaction) =&gt; {
+      const store = database.createObjectStore('cache',
+          { keyPath: 'key', autoIncrement: true });
+    }).then(database =&gt; {
+      return populateTestStore(testCase, database, cursorCount).then(
+          () =&gt; database);
+    }).then(database =&gt; {
+      database.close();
+    }).then(() =&gt; {
+      return openDatabase(testCase);
+    }).then(database =&gt; {
+      const transaction = database.transaction('cache', 'readonly');
+      transaction.onabort = () =&gt; { reject(transaction.error); };
+
+      const store = transaction.objectStore('cache');
+      return interleaveCursors(testCase, store, cursorCount).then(
+          () =&gt; database);
+    }).then(database =&gt; {
+      database.close();
+    });
+  }, `${cursorCount} cursors`);
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBparallelcursorsupgradeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS 2 cursors 
+PASS 10 cursors 
+PASS 100 cursors 
+PASS 1000 cursors 
+PASS 10000 cursors 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBparallelcursorsupgradehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;meta name=&quot;timeout&quot; content=&quot;long&quot;&gt;
+&lt;title&gt;IndexedDB: Parallel iteration of cursors in upgradeneeded&lt;/title&gt;
+&lt;link rel=&quot;author&quot; href=&quot;pwnall@chromium.org&quot; title=&quot;Victor Costan&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-promises.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+'use strict';
+
+for (let cursorCount of [2, 10, 100, 1000, 10000]) {
+  promise_test(testCase =&gt; {
+    return createDatabase(testCase, (database, transaction) =&gt; {
+      const store = database.createObjectStore('cache', { keyPath: 'key' });
+      store.put({ key: '42' });
+
+      const promises = [];
+
+      for (let j = 0; j &lt; 2; j += 1) {
+        const promise = new Promise((resolve, reject) =&gt; {
+          let request = null;
+          for (let i = 0; i &lt; cursorCount / 2; i += 1) {
+            request = store.openCursor();
+          }
+
+          let continued = false;
+          request.onsuccess = testCase.step_func(() =&gt; {
+            const cursor = request.result;
+
+            if (!continued) {
+              assert_equals(cursor.key, '42');
+              assert_equals(cursor.value.key, '42');
+              continued = true;
+              cursor.continue();
+            } else {
+              assert_equals(cursor, null);
+              resolve();
+            }
+          });
+          request.onerror = () =&gt; reject(request.error);
+        });
+        promises.push(promise);
+      }
+      return Promise.all(promises);
+    }).then(database =&gt; {
+      database.close();
+    });
+  }, `${cursorCount} cursors`);
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBsupportpromisesjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support-promises.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support-promises.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/support-promises.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -21,7 +21,7 @@
</span><span class="cx"> // open request.
</span><span class="cx"> //
</span><span class="cx"> // Returns a promise. If the versionchange transaction goes through, the promise
</span><del>-// resolves to an IndexedDB database that must be closed by the caller. If the
</del><ins>+// resolves to an IndexedDB database that should be closed by the caller. If the
</ins><span class="cx"> // versionchange transaction is aborted, the promise resolves to an error.
</span><span class="cx"> function migrateDatabase(testCase, newVersion, migrationCallback) {
</span><span class="cx">   return migrateNamedDatabase(
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> // open request.
</span><span class="cx"> //
</span><span class="cx"> // Returns a promise. If the versionchange transaction goes through, the promise
</span><del>-// resolves to an IndexedDB database that must be closed by the caller. If the
</del><ins>+// resolves to an IndexedDB database that should be closed by the caller. If the
</ins><span class="cx"> // versionchange transaction is aborted, the promise resolves to an error.
</span><span class="cx"> function migrateNamedDatabase(
</span><span class="cx">     testCase, databaseName, newVersion, migrationCallback) {
</span><span class="lines">@@ -88,10 +88,20 @@
</span><span class="cx">       resolve(Promise.resolve(callbackResult).then(() =&gt; requestEventPromise));
</span><span class="cx">     });
</span><span class="cx">     request.onerror = event =&gt; reject(event.target.error);
</span><del>-    request.onsuccess = () =&gt; reject(new Error(
-        'indexedDB.open should not succeed without creating a ' +
-        'versionchange transaction'));
-  }).then(event =&gt; event.target.result || event.target.error);
</del><ins>+    request.onsuccess = () =&gt; {
+      const database = request.result;
+      testCase.add_cleanup(() =&gt; { database.close(); });
+      reject(new Error(
+          'indexedDB.open should not succeed without creating a ' +
+          'versionchange transaction'));
+    };
+  }).then(event =&gt; {
+    const database = event.target.result;
+    if (database) {
+      testCase.add_cleanup(() =&gt; { database.close(); });
+    }
+    return database || event.target.error;
+  });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Creates an IndexedDB database whose name is unique for the test case.
</span><span class="lines">@@ -100,7 +110,7 @@
</span><span class="cx"> // given the created database, the versionchange transaction, and the database
</span><span class="cx"> // open request.
</span><span class="cx"> //
</span><del>-// Returns a promise that resolves to an IndexedDB database. The caller must
</del><ins>+// Returns a promise that resolves to an IndexedDB database. The caller should
</ins><span class="cx"> // close the database.
</span><span class="cx"> function createDatabase(testCase, setupCallback) {
</span><span class="cx">   return createNamedDatabase(testCase, databaseName(testCase), setupCallback);
</span><span class="lines">@@ -112,14 +122,16 @@
</span><span class="cx"> // given the created database, the versionchange transaction, and the database
</span><span class="cx"> // open request.
</span><span class="cx"> //
</span><del>-// Returns a promise that resolves to an IndexedDB database. The caller must
</del><ins>+// Returns a promise that resolves to an IndexedDB database. The caller should
</ins><span class="cx"> // close the database.
</span><span class="cx"> function createNamedDatabase(testCase, databaseName, setupCallback) {
</span><span class="cx">   const request = indexedDB.deleteDatabase(databaseName);
</span><span class="cx">   const eventWatcher = requestWatcher(testCase, request);
</span><span class="cx"> 
</span><del>-  return eventWatcher.wait_for('success').then(event =&gt;
-      migrateNamedDatabase(testCase, databaseName, 1, setupCallback));
</del><ins>+  return eventWatcher.wait_for('success').then(event =&gt; {
+    testCase.add_cleanup(() =&gt; { indexedDB.deleteDatabase(databaseName); });
+    return migrateNamedDatabase(testCase, databaseName, 1, setupCallback)
+  });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // Opens an IndexedDB database without performing schema changes.
</span><span class="lines">@@ -126,7 +138,7 @@
</span><span class="cx"> //
</span><span class="cx"> // The given version number must match the database's current version.
</span><span class="cx"> //
</span><del>-// Returns a promise that resolves to an IndexedDB database. The caller must
</del><ins>+// Returns a promise that resolves to an IndexedDB database. The caller should
</ins><span class="cx"> // close the database.
</span><span class="cx"> function openDatabase(testCase, version) {
</span><span class="cx">   return openNamedDatabase(testCase, databaseName(testCase), version);
</span><span class="lines">@@ -136,12 +148,16 @@
</span><span class="cx"> //
</span><span class="cx"> // The given version number must match the database's current version.
</span><span class="cx"> //
</span><del>-// Returns a promise that resolves to an IndexedDB database. The caller must
</del><ins>+// Returns a promise that resolves to an IndexedDB database. The caller should
</ins><span class="cx"> // close the database.
</span><span class="cx"> function openNamedDatabase(testCase, databaseName, version) {
</span><span class="cx">   const request = indexedDB.open(databaseName, version);
</span><span class="cx">   const eventWatcher = requestWatcher(testCase, request);
</span><del>-  return eventWatcher.wait_for('success').then(event =&gt; event.target.result);
</del><ins>+  return eventWatcher.wait_for('success').then(() =&gt; {
+    const database = request.result;
+    testCase.add_cleanup(() =&gt; { database.close(); });
+    return database;
+  });
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // The data in the 'books' object store records in the first example of the
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsIndexedDBw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -245,6 +245,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex12.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex13.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex14-exception_order.htm
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex2.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm
</span><span class="lines">@@ -306,6 +307,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/interleaved-cursors.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm
</span><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="lines">@@ -324,6 +326,7 @@
</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><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade.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="trunkLayoutTestsimportedw3cwebplatformtestsLICENSEmd"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/LICENSE.md (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/LICENSE.md        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/LICENSE.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><del>-#Dual-License for W3C Test Suites
</del><ins>+# Dual-License for W3C Test Suites
</ins><span class="cx"> 
</span><span class="cx"> All documents in this Repository are licensed by contributors to be distributed under both the [W3C Test Suite License](#w3c-test-suite-license) and the [W3C 3-clause BSD License](#w3c-3-clause-bsd-license), reproduced below. The choice of license is up to the licensee. For more information, see [Licenses for W3C Test Suites](https://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html)
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsREADMEmd"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/README.md (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/README.md        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/README.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,9 +2,7 @@
</span><span class="cx"> ==============================
</span><span class="cx"> 
</span><span class="cx"> The web-platform-tests Project is a W3C-coordinated attempt to build a
</span><del>-cross-browser testsuite for the Web-platform stack.  However, for mainly
-historic reasons, the CSS WG testsuite is in a separate repository,
-[csswg-test](https://github.com/w3c/csswg-test). Writing tests in a way
</del><ins>+cross-browser testsuite for the Web-platform stack. Writing tests in a way
</ins><span class="cx"> that allows them to be run in all browsers gives browser projects
</span><span class="cx"> confidence that they are shipping software that is compatible with other
</span><span class="cx"> implementations, and that later implementations will be compatible with
</span><span class="lines">@@ -110,41 +108,23 @@
</span><span class="cx"> in the Windows 10 Anniversary Update build, then access your windows
</span><span class="cx"> partition from there to launch wptserve.
</span><span class="cx"> 
</span><del>-Test Runner
-===========
-
-There is a test runner that is designed to provide a
-convenient way to run the web-platform-tests in-browser. It will run
-testharness.js tests automatically but requires manual work for
-reftests and manual tests.
-
-The runner can be found at `/tools/runner/index.html` on the local
-server i.e.
-
-```
-http://web-platform.test:8000/tools/runner/index.html
-```
-
-in the default configuration. The first time you use this it has to
-generate a manifest of all tests. This may take some time, so please
-be patient.
-
</del><span class="cx"> Publication
</span><span class="cx"> ===========
</span><span class="cx"> 
</span><span class="cx"> The master branch is automatically synced to http://w3c-test.org/.
</span><span class="cx"> 
</span><del>-Pull requests are automatically mirrored to
-http://w3c-test.org/submissions/ a few minutes after someone with merge
-access has added a comment with &quot;LGTM&quot; (or &quot;w3c-test:mirror&quot;) to indicate
-the PR has been checked.
</del><ins>+Pull requests are
+[automatically mirrored](http://w3c-test.org/submissions/) except those
+that modify sensitive resources (such as `.py`). The latter require
+someone with merge access to comment with &quot;LGTM&quot; or &quot;w3c-test:mirror&quot; to
+indicate the pull request has been checked.
</ins><span class="cx"> 
</span><span class="cx"> Finding Things
</span><span class="cx"> ==============
</span><span class="cx"> 
</span><del>-Each top-level directory represents a W3C specification: the name
-matches the shortname used after the canonical address of the said
-specification under http://www.w3.org/TR/ .
</del><ins>+Each top-level directory matches the shortname used by a standard, with
+some exceptions. (Typically the shortname is from the standard's
+corresponding GitHub repository.)
</ins><span class="cx"> 
</span><span class="cx"> For some of the specifications, the tree under the top-level directory
</span><span class="cx"> represents the sections of the respective documents, using the section
</span><span class="lines">@@ -185,6 +165,14 @@
</span><span class="cx"> * Commit locally and push that to your repo.
</span><span class="cx"> * Send in a pull request based on the above.
</span><span class="cx"> 
</span><ins>+Issues with web-platform-tests
+------------------------------
+
+If you spot an issue with a test and are not comfortable providing a
+pull request per above to fix it, please
+[file a new issue](https://github.com/w3c/web-platform-tests/issues/new).
+Thank you!
+
</ins><span class="cx"> Lint tool
</span><span class="cx"> ---------
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsWebIDLecmascriptbindingesexceptionsexceptionshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/WebIDL/ecmascript-binding/es-exceptions/exceptions.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +1,5 @@
</span><span class="cx"> &lt;!doctype html&gt;
</span><ins>+&lt;meta charset=utf-8&gt;
</ins><span class="cx"> &lt;title&gt;DOMException-throwing tests&lt;/title&gt;
</span><span class="cx"> &lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
</span><span class="cx"> &lt;div id=log&gt;&lt;/div&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequesteventreadystatechangeloadedhtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/event-readystatechange-loaded.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (client.readyState === 4) {
</span><del>-            assert_equals(countedLoading, 10, &quot;LOADING state change may be emitted multiple times&quot;);
</del><ins>+            assert_greater_than(countedLoading, 1, &quot;LOADING state change may be emitted multiple times&quot;);
</ins><span class="cx"> 
</span><span class="cx">             test.done();
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresourcesauth2corsenabledpy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/auth2/corsenabled.py (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/auth2/corsenabled.py        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/auth2/corsenabled.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -7,14 +7,8 @@
</span><span class="cx">     response.headers.set('Access-Control-Allow-Methods', 'GET');
</span><span class="cx">     response.headers.set('Access-Control-Allow-Headers', 'authorization, x-user, x-pass');
</span><span class="cx">     response.headers.set('Access-Control-Expose-Headers', 'x-challenge, xhr-user, ses-user');
</span><del>-    auth = imp.load_source(&quot;&quot;, os.path.join(os.path.abspath(os.curdir),
-                                            &quot;XMLHttpRequest&quot;,
-                                            &quot;resources&quot;,
-                                            &quot;authentication.py&quot;))
</del><ins>+    auth = imp.load_source(&quot;&quot;, os.path.abspath(&quot;XMLHttpRequest/resources/authentication.py&quot;))
</ins><span class="cx">     if request.method == &quot;OPTIONS&quot;:
</span><span class="cx">         return &quot;&quot;
</span><span class="cx">     else:
</span><span class="cx">         return auth.main(request, response)
</span><del>-
-
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestresourcesconditionalpy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/conditional.py (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/conditional.py        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/resources/conditional.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -3,15 +3,27 @@
</span><span class="cx">     match = request.headers.get(&quot;If-None-Match&quot;, None)
</span><span class="cx">     date = request.GET.first(&quot;date&quot;, &quot;&quot;)
</span><span class="cx">     modified = request.headers.get(&quot;If-Modified-Since&quot;, None)
</span><ins>+    cors = request.GET.first(&quot;cors&quot;, None)
+
+    if request.method == &quot;OPTIONS&quot;:
+        response.headers.set(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;)
+        response.headers.set(&quot;Access-Control-Allow-Headers&quot;, &quot;IF-NONE-MATCH&quot;)
+        return &quot;&quot;
+
</ins><span class="cx">     if tag:
</span><span class="cx">         response.headers.set(&quot;ETag&quot;, '&quot;%s&quot;' % tag)
</span><span class="cx">     elif date:
</span><span class="cx">         response.headers.set(&quot;Last-Modified&quot;, date)
</span><span class="cx"> 
</span><ins>+    if cors:
+        response.headers.set(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;)
+
</ins><span class="cx">     if ((match is not None and match == tag) or
</span><span class="cx">         (modified is not None and modified == date)):
</span><span class="cx">         response.status = (304, &quot;SUPERCOOL&quot;)
</span><span class="cx">         return &quot;&quot;
</span><span class="cx">     else:
</span><ins>+        if not cors:
+            response.headers.set(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;)
</ins><span class="cx">         response.headers.set(&quot;Content-Type&quot;, &quot;text/plain&quot;)
</span><span class="cx">         return &quot;MAYBE NOT&quot;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendauthenticationcorsbasicsetrequestheaderexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> Blocked access to external URL http://www1.localhost:8800/XMLHttpRequest/resources/auth2/corsenabled.py
</span><del>-CONSOLE MESSAGE: line 34: XMLHttpRequest cannot load http://www1.localhost:8800/XMLHttpRequest/resources/auth2/corsenabled.py due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 26: XMLHttpRequest cannot load http://www1.localhost:8800/XMLHttpRequest/resources/auth2/corsenabled.py due to access control checks.
</ins><span class="cx"> 
</span><del>-FAIL XMLHttpRequest: send() - &quot;Basic&quot; authenticated CORS request using setRequestHeader() (expects to succeed) assert_true: responseText should contain the right user and password expected true got false
</del><ins>+FAIL XMLHttpRequest: send() - &quot;Basic&quot; authenticated CORS request using setRequestHeader() (expects to succeed)  A network error occurred.
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendauthenticationcorsbasicsetrequestheaderhtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -5,15 +5,11 @@
</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><span class="cx">     &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
</span><del>-    &lt;!--  These spec references do not make much sense simply because the spec doesn't say very much about this..  --&gt;
-    &lt;link rel=&quot;help&quot; href=&quot;https://xhr.spec.whatwg.org/#the-setrequestheader()-method&quot; data-tested-assertations=&quot;following::ol[1]/li[6]&quot; /&gt;
-    &lt;link rel=&quot;help&quot; href=&quot;https://xhr.spec.whatwg.org/#the-send()-method&quot; data-tested-assertations=&quot;following::code[contains(@title,'http-authorization')]/..&quot; /&gt;
</del><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><span class="cx">     &lt;script&gt;
</span><del>-      var test = async_test()
-      test.step(function() {
</del><ins>+      async_test(test =&gt; {
</ins><span class="cx">         var client = new XMLHttpRequest(),
</span><span class="cx">             urlstart = location.host + location.pathname.replace(/\/[^\/]*$/, '/'),
</span><span class="cx">             user = token()
</span><span class="lines">@@ -22,15 +18,11 @@
</span><span class="cx">         client.setRequestHeader(&quot;x-user&quot;, user)
</span><span class="cx">         client.setRequestHeader(&quot;x-pass&quot;, 'pass')
</span><span class="cx">         client.setRequestHeader('Authorization', 'Basic ' + btoa(user + &quot;:pass&quot;))
</span><del>-        client.onreadystatechange = function () {
-          if (client.readyState &lt; 4) {return}
-          test.step( function () {
-            assert_true(client.responseText == (user + '\npass'), 'responseText should contain the right user and password')
</del><ins>+        client.onload = test.step_func_done(() =&gt; {
+            assert_equals(client.responseText, user + '\npass', 'responseText should contain the right user and password')
</ins><span class="cx">             assert_equals(client.status, 200)
</span><span class="cx">             assert_equals(client.getResponseHeader('x-challenge'), 'DID-NOT')
</span><del>-            test.done()
-          } )
-        }
</del><ins>+        })
</ins><span class="cx">         client.send(null)
</span><span class="cx">       })
</span><span class="cx">     &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendconditionalcorsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+Blocked access to external URL http://www1.localhost:8800/XMLHttpRequest/resources/conditional.py?tag=0.09154653510378963
+Blocked access to external URL http://www1.localhost:8800/XMLHttpRequest/resources/conditional.py?tag=0.25460048558200665&amp;cors=yes
+
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT 304 without appropriate CORS header Test timed out
+TIMEOUT 304 with appropriate CORS header Test timed out
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendconditionalcorshtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;XMLHttpRequest: send() - conditional cross-origin requests&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=/cors/support.js?pipe=sub&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+function request(withCORS, desc) {
+  async_test(t =&gt; {
+    const client = new XMLHttpRequest,
+          identifier = Math.random(),
+          cors = withCORS ? &quot;&amp;cors=yes&quot; : &quot;&quot;,
+          url = CROSSDOMAIN + &quot;resources/conditional.py?tag=&quot; + identifier + cors
+    client.onload = t.step_func(() =&gt; {
+      assert_equals(client.status, 200)
+      assert_equals(client.statusText, &quot;OK&quot;)
+      assert_equals(client.responseText, &quot;MAYBE NOT&quot;)
+
+      if(withCORS) {
+        client.onload = t.step_func_done(() =&gt; {
+          assert_equals(client.status, 304)
+          assert_equals(client.statusText, &quot;SUPERCOOL&quot;)
+          assert_equals(client.responseText, &quot;&quot;)
+        })
+      } else {
+        client.onload = null
+        client.onerror = t.step_func_done(() =&gt; {
+          assert_equals(client.status, 0)
+          assert_equals(client.statusText, &quot;&quot;)
+        })
+      }
+      client.open(&quot;GET&quot;, url)
+      client.setRequestHeader(&quot;If-None-Match&quot;, identifier)
+      client.send()
+    })
+    client.open(&quot;GET&quot;, url)
+    client.send()
+  }, desc)
+}
+request(false, &quot;304 without appropriate CORS header&quot;)
+request(true, &quot;304 with appropriate CORS header&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendentitybodydocumentbogusexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,6 @@
</span><span class="cx"> 
</span><del>-FAIL XMLHttpRequest: send() - unserializable Document assert_throws: function &quot;function () { client.send(input) }&quot; did not throw
</del><ins>+PASS Serializing documents through XMLHttpRequest: '' 
+PASS Serializing documents through XMLHttpRequest: '&lt;test:test/&gt;' 
+PASS Serializing documents through XMLHttpRequest: '&lt;test:test test:test=&quot;gee&quot;/&gt;' 
+FAIL Serializing documents through XMLHttpRequest: '&lt;test:test test:test=&quot;gee&quot; x=&quot;�&quot;/&gt;' assert_equals: expected &quot;&lt;test:test test:test=\&quot;gee\&quot; x=\&quot;\ufffd\&quot;/&gt;&quot; but got &quot;&lt;test:test test:test=\&quot;gee\&quot; x=\&quot;\ufffd\ufffd\ufffd\&quot;/&gt;&quot;
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendentitybodydocumentbogushtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-document-bogus.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,26 +1,26 @@
</span><span class="cx"> &lt;!doctype html&gt;
</span><del>-&lt;html&gt;
-  &lt;head&gt;
-    &lt;title&gt;XMLHttpRequest: send() - unserializable Document&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;link rel=&quot;help&quot; href=&quot;https://xhr.spec.whatwg.org/#dom-XMLHttpRequest-send-document&quot; data-tested-assertations=&quot;following::p[3]&quot; /&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
-    &lt;script&gt;
-      function request_throws(input) {
-        test(function() {
-          var client = new XMLHttpRequest()
-          client.open(&quot;POST&quot;, &quot;resources/content.py&quot;, false)
-          assert_throws(&quot;InvalidStateError&quot;, function() { client.send(input) })
-        })
-      }
-      var doc = document.implementation.createDocument(null, null, null)
-      while(doc.childNodes.length) {
-        doc.removeChild(doc.childNodes[0])
-      }
-      request_throws(doc)
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><ins>+&lt;title&gt;XMLHttpRequest: send() - Document with serialization errors&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;
+function serialize(input, output) {
+  async_test(t =&gt; {
+    const client = new XMLHttpRequest
+    client.open(&quot;POST&quot;, &quot;resources/content.py&quot;)
+    client.send(input)
+    client.onload = t.step_func_done(() =&gt; {
+      assert_equals(client.responseText, output)
+    })
+  }, &quot;Serializing documents through XMLHttpRequest: '&quot; + output + &quot;'&quot;)
+}
+
+var doc = document.implementation.createDocument(null, null, null)
+serialize(doc, &quot;&quot;)
+doc.appendChild(doc.createElement(&quot;test:test&quot;))
+serialize(doc, &quot;&lt;test:test/&gt;&quot;)
+doc.childNodes[0].setAttribute(&quot;test:test&quot;, &quot;gee&quot;)
+serialize(doc, &quot;&lt;test:test test:test=\&quot;gee\&quot;/&gt;&quot;)
+doc.childNodes[0].setAttribute(&quot;x&quot;, &quot;\uD800&quot;)
+serialize(doc, &quot;&lt;test:test test:test=\&quot;gee\&quot; x=\&quot;\uFFFD\&quot;/&gt;&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendnonsameoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,8 +1,10 @@
</span><del>-CONSOLE MESSAGE: line 23: XMLHttpRequest cannot load mailto:test@example.org. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 23: XMLHttpRequest cannot load tel:+31600000000. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 23: XMLHttpRequest cannot load http://127.0.0.1:8800/. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: line 23: XMLHttpRequest cannot load javascript:alert('FAIL'). Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 23: XMLHttpRequest cannot load http://127.0.0.1:8800/folder.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
</del><ins>+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load mailto:test@example.org. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load tel:+31600000000. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load http://127.0.0.1:8800/. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load javascript:alert('FAIL'). Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load http://127.0.0.1:8800/folder.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 21: XMLHttpRequest cannot load blob:bogusidentifier. Cross origin requests are only supported for HTTP.
</ins><span class="cx"> 
</span><span class="cx"> PASS XMLHttpRequest: send() - non same-origin (mailto:test@example.org) 
</span><span class="cx"> PASS XMLHttpRequest: send() - non same-origin (tel:+31600000000) 
</span><span class="lines">@@ -9,4 +11,6 @@
</span><span class="cx"> PASS XMLHttpRequest: send() - non same-origin (http://127.0.0.1:8800) 
</span><span class="cx"> PASS XMLHttpRequest: send() - non same-origin (javascript:alert('FAIL')) 
</span><span class="cx"> PASS XMLHttpRequest: send() - non same-origin (folder.txt) 
</span><ins>+PASS XMLHttpRequest: send() - non same-origin (about:blank) 
+PASS XMLHttpRequest: send() - non same-origin (blob:bogusidentifier) 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsendnonsameoriginhtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-non-same-origin.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -5,8 +5,6 @@
</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><span class="cx">     &lt;base&gt;
</span><del>-    &lt;link rel=&quot;help&quot; href=&quot;https://xhr.spec.whatwg.org/#cross-origin-request-steps&quot; data-tested-assertations=&quot;/following::DL[2]/DT[1] /following::DL[2]/DD[1]&quot; /&gt;
-    &lt;link rel=&quot;help&quot; href=&quot;https://xhr.spec.whatwg.org/#cross-origin-request-event-rules&quot; data-tested-assertations=&quot;/following::DL[1]/DT[2] /following::DL[1]/DD[2]&quot; /&gt;
</del><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><span class="lines">@@ -28,6 +26,8 @@
</span><span class="cx">       url(host_info.HTTP_REMOTE_ORIGIN)
</span><span class="cx">       url(&quot;javascript:alert('FAIL')&quot;)
</span><span class="cx">       url(&quot;folder.txt&quot;)
</span><ins>+      url(&quot;about:blank&quot;)
+      url(&quot;blob:bogusidentifier&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="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsenduspanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,131 @@
</span><ins>+
+PASS Overall fetch with URLSearchParams 
+PASS XMLHttpRequest.send(URLSearchParams) (0) 
+PASS XMLHttpRequest.send(URLSearchParams) (1) 
+PASS XMLHttpRequest.send(URLSearchParams) (2) 
+PASS XMLHttpRequest.send(URLSearchParams) (3) 
+PASS XMLHttpRequest.send(URLSearchParams) (4) 
+PASS XMLHttpRequest.send(URLSearchParams) (5) 
+PASS XMLHttpRequest.send(URLSearchParams) (6) 
+PASS XMLHttpRequest.send(URLSearchParams) (7) 
+PASS XMLHttpRequest.send(URLSearchParams) (8) 
+PASS XMLHttpRequest.send(URLSearchParams) (9) 
+PASS XMLHttpRequest.send(URLSearchParams) (10) 
+PASS XMLHttpRequest.send(URLSearchParams) (11) 
+PASS XMLHttpRequest.send(URLSearchParams) (12) 
+PASS XMLHttpRequest.send(URLSearchParams) (13) 
+PASS XMLHttpRequest.send(URLSearchParams) (14) 
+PASS XMLHttpRequest.send(URLSearchParams) (15) 
+PASS XMLHttpRequest.send(URLSearchParams) (16) 
+PASS XMLHttpRequest.send(URLSearchParams) (17) 
+PASS XMLHttpRequest.send(URLSearchParams) (18) 
+PASS XMLHttpRequest.send(URLSearchParams) (19) 
+PASS XMLHttpRequest.send(URLSearchParams) (20) 
+PASS XMLHttpRequest.send(URLSearchParams) (21) 
+PASS XMLHttpRequest.send(URLSearchParams) (22) 
+PASS XMLHttpRequest.send(URLSearchParams) (23) 
+PASS XMLHttpRequest.send(URLSearchParams) (24) 
+PASS XMLHttpRequest.send(URLSearchParams) (25) 
+PASS XMLHttpRequest.send(URLSearchParams) (26) 
+PASS XMLHttpRequest.send(URLSearchParams) (27) 
+PASS XMLHttpRequest.send(URLSearchParams) (28) 
+PASS XMLHttpRequest.send(URLSearchParams) (29) 
+PASS XMLHttpRequest.send(URLSearchParams) (30) 
+PASS XMLHttpRequest.send(URLSearchParams) (31) 
+PASS XMLHttpRequest.send(URLSearchParams) (32) 
+PASS XMLHttpRequest.send(URLSearchParams) (33) 
+PASS XMLHttpRequest.send(URLSearchParams) (34) 
+PASS XMLHttpRequest.send(URLSearchParams) (35) 
+PASS XMLHttpRequest.send(URLSearchParams) (36) 
+PASS XMLHttpRequest.send(URLSearchParams) (37) 
+PASS XMLHttpRequest.send(URLSearchParams) (38) 
+PASS XMLHttpRequest.send(URLSearchParams) (39) 
+PASS XMLHttpRequest.send(URLSearchParams) (40) 
+PASS XMLHttpRequest.send(URLSearchParams) (41) 
+PASS XMLHttpRequest.send(URLSearchParams) (42) 
+PASS XMLHttpRequest.send(URLSearchParams) (43) 
+PASS XMLHttpRequest.send(URLSearchParams) (44) 
+PASS XMLHttpRequest.send(URLSearchParams) (45) 
+PASS XMLHttpRequest.send(URLSearchParams) (46) 
+PASS XMLHttpRequest.send(URLSearchParams) (47) 
+PASS XMLHttpRequest.send(URLSearchParams) (48) 
+PASS XMLHttpRequest.send(URLSearchParams) (49) 
+PASS XMLHttpRequest.send(URLSearchParams) (50) 
+PASS XMLHttpRequest.send(URLSearchParams) (51) 
+PASS XMLHttpRequest.send(URLSearchParams) (52) 
+PASS XMLHttpRequest.send(URLSearchParams) (53) 
+PASS XMLHttpRequest.send(URLSearchParams) (54) 
+PASS XMLHttpRequest.send(URLSearchParams) (55) 
+PASS XMLHttpRequest.send(URLSearchParams) (56) 
+PASS XMLHttpRequest.send(URLSearchParams) (57) 
+PASS XMLHttpRequest.send(URLSearchParams) (58) 
+PASS XMLHttpRequest.send(URLSearchParams) (59) 
+PASS XMLHttpRequest.send(URLSearchParams) (60) 
+PASS XMLHttpRequest.send(URLSearchParams) (61) 
+PASS XMLHttpRequest.send(URLSearchParams) (62) 
+PASS XMLHttpRequest.send(URLSearchParams) (63) 
+PASS XMLHttpRequest.send(URLSearchParams) (64) 
+PASS XMLHttpRequest.send(URLSearchParams) (65) 
+PASS XMLHttpRequest.send(URLSearchParams) (66) 
+PASS XMLHttpRequest.send(URLSearchParams) (67) 
+PASS XMLHttpRequest.send(URLSearchParams) (68) 
+PASS XMLHttpRequest.send(URLSearchParams) (69) 
+PASS XMLHttpRequest.send(URLSearchParams) (70) 
+PASS XMLHttpRequest.send(URLSearchParams) (71) 
+PASS XMLHttpRequest.send(URLSearchParams) (72) 
+PASS XMLHttpRequest.send(URLSearchParams) (73) 
+PASS XMLHttpRequest.send(URLSearchParams) (74) 
+PASS XMLHttpRequest.send(URLSearchParams) (75) 
+PASS XMLHttpRequest.send(URLSearchParams) (76) 
+PASS XMLHttpRequest.send(URLSearchParams) (77) 
+PASS XMLHttpRequest.send(URLSearchParams) (78) 
+PASS XMLHttpRequest.send(URLSearchParams) (79) 
+PASS XMLHttpRequest.send(URLSearchParams) (80) 
+PASS XMLHttpRequest.send(URLSearchParams) (81) 
+PASS XMLHttpRequest.send(URLSearchParams) (82) 
+PASS XMLHttpRequest.send(URLSearchParams) (83) 
+PASS XMLHttpRequest.send(URLSearchParams) (84) 
+PASS XMLHttpRequest.send(URLSearchParams) (85) 
+PASS XMLHttpRequest.send(URLSearchParams) (86) 
+PASS XMLHttpRequest.send(URLSearchParams) (87) 
+PASS XMLHttpRequest.send(URLSearchParams) (88) 
+PASS XMLHttpRequest.send(URLSearchParams) (89) 
+PASS XMLHttpRequest.send(URLSearchParams) (90) 
+PASS XMLHttpRequest.send(URLSearchParams) (91) 
+PASS XMLHttpRequest.send(URLSearchParams) (92) 
+PASS XMLHttpRequest.send(URLSearchParams) (93) 
+PASS XMLHttpRequest.send(URLSearchParams) (94) 
+PASS XMLHttpRequest.send(URLSearchParams) (95) 
+PASS XMLHttpRequest.send(URLSearchParams) (96) 
+PASS XMLHttpRequest.send(URLSearchParams) (97) 
+PASS XMLHttpRequest.send(URLSearchParams) (98) 
+PASS XMLHttpRequest.send(URLSearchParams) (99) 
+PASS XMLHttpRequest.send(URLSearchParams) (100) 
+PASS XMLHttpRequest.send(URLSearchParams) (101) 
+PASS XMLHttpRequest.send(URLSearchParams) (102) 
+PASS XMLHttpRequest.send(URLSearchParams) (103) 
+PASS XMLHttpRequest.send(URLSearchParams) (104) 
+PASS XMLHttpRequest.send(URLSearchParams) (105) 
+PASS XMLHttpRequest.send(URLSearchParams) (106) 
+PASS XMLHttpRequest.send(URLSearchParams) (107) 
+PASS XMLHttpRequest.send(URLSearchParams) (108) 
+PASS XMLHttpRequest.send(URLSearchParams) (109) 
+PASS XMLHttpRequest.send(URLSearchParams) (110) 
+PASS XMLHttpRequest.send(URLSearchParams) (111) 
+PASS XMLHttpRequest.send(URLSearchParams) (112) 
+PASS XMLHttpRequest.send(URLSearchParams) (113) 
+PASS XMLHttpRequest.send(URLSearchParams) (114) 
+PASS XMLHttpRequest.send(URLSearchParams) (115) 
+PASS XMLHttpRequest.send(URLSearchParams) (116) 
+PASS XMLHttpRequest.send(URLSearchParams) (117) 
+PASS XMLHttpRequest.send(URLSearchParams) (118) 
+PASS XMLHttpRequest.send(URLSearchParams) (119) 
+PASS XMLHttpRequest.send(URLSearchParams) (120) 
+PASS XMLHttpRequest.send(URLSearchParams) (121) 
+PASS XMLHttpRequest.send(URLSearchParams) (122) 
+PASS XMLHttpRequest.send(URLSearchParams) (123) 
+PASS XMLHttpRequest.send(URLSearchParams) (124) 
+PASS XMLHttpRequest.send(URLSearchParams) (125) 
+PASS XMLHttpRequest.send(URLSearchParams) (126) 
+PASS XMLHttpRequest.send(URLSearchParams) (127) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsenduspanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestsenduspanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+const NUM_TESTS = 128;
+
+function encode(n) {
+  if (n === 0x20) {
+    return &quot;\x2B&quot;;
+  }
+
+  if (n === 0x2A || n === 0x2D || n === 0x2E ||
+      (0x30 &lt;= n &amp;&amp; n &lt;= 0x39) || (0x41 &lt;= n &amp;&amp; n &lt;= 0x5A) ||
+      n === 0x5F || (0x61 &lt;= n &amp;&amp; n &lt;= 0x7A)) {
+    return String.fromCharCode(n);
+  }
+
+  var s = n.toString(16).toUpperCase();
+  return &quot;%&quot; + (s.length === 2 ? s : '0' + s);
+}
+
+  var tests = [];
+  var overall_test = async_test(&quot;Overall fetch with URLSearchParams&quot;);
+  for (var i = 0; i &lt; NUM_TESTS; i++) {
+    // Multiple subtests so that failures can be fine-grained
+    tests[i] = async_test(&quot;XMLHttpRequest.send(URLSearchParams) (&quot; + i + &quot;)&quot;);
+  }
+
+  // We use a single XHR since this test tends to time out
+  // with 128 consecutive fetches when run in parallel
+  // with many other WPT tests.
+  var x = new XMLHttpRequest();
+  x.onload = overall_test.step_func(function() {
+    var response_split = x.response.split(&quot;&amp;&quot;);
+    overall_test.done();
+    for (var i = 0; i &lt; NUM_TESTS; i++) {
+      tests[i].step(function() {
+        assert_equals(response_split[i], &quot;a&quot; + i + &quot;=&quot;+encode(i));
+        tests[i].done();
+      });
+    }
+  });
+  x.onerror = overall_test.unreached_func();
+
+  x.open(&quot;POST&quot;, &quot;resources/content.py&quot;);
+  var usp = new URLSearchParams();
+  for (var i = 0; i &lt; NUM_TESTS; i++) {
+    usp.append(&quot;a&quot; + i, String.fromCharCode(i));
+  }
+  x.send(usp)
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsXMLHttpRequestw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -138,6 +138,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-basic-setrequestheader.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-cors-setrequestheader-no-cred.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-blob-with-no-mime-type.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional-cors.htm
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-conditional.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-content-type-charset.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-content-type-string.htm
</span><span class="lines">@@ -181,9 +182,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-sync-response-event-order.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-sync-timeout.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-timeout-events.htm
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.html
-/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.js
-/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.worker.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-usp.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-after-send.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-allow-empty-value.htm
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-allow-whitespace-in-value.htm
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/OWNERS (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+@beverloo
+@jakearchibald
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+idlharness test
+
+This test validates the WebIDL included in the Background Fetch API (Documents).
+
+
+PASS Exposed interfaces in a Document. 
+FAIL ServiceWorkerRegistration interface: attribute backgroundFetch assert_own_property: self does not have own property &quot;ServiceWorkerRegistration&quot; expected property &quot;ServiceWorkerRegistration&quot; missing
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object 
+FAIL BackgroundFetchManager interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface object length assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface object name assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: operation fetch(DOMString,[object Object],[object Object],BackgroundFetchOptions) assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: operation get(DOMString) assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: operation getTags() assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchRegistration interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface object length assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface object name assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute tag assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute icons assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute totalDownloadSize assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute title assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute fetches assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: operation abort() assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchFetches interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface object length assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface object name assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface: attribute request assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface object length assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface object name assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: attribute responseReady assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+PASS BackgroundFetchEvent interface: existence and properties of interface object 
+PASS BackgroundFetchEndEvent interface: existence and properties of interface object 
+PASS BackgroundFetchSettledFetches interface: existence and properties of interface object 
+PASS BackgroundFetchFailEvent interface: existence and properties of interface object 
+PASS BackgroundFetchClickEvent interface: existence and properties of interface object 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+idlharness test
+
+This test validates the WebIDL included in the Background Fetch API (Service Workers).
+
+
+FAIL Service Worker-scoped tests. undefined is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerhttpshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;Background Fetch API IDL tests&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;h1&gt;idlharness test&lt;/h1&gt;
+&lt;p&gt;This test validates the WebIDL included in the Background Fetch API (Service Workers).&lt;/p&gt;
+
+&lt;script&gt;
+'use strict';
+
+service_worker_test('interfaces.worker.js', 'Service Worker-scoped tests.');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfaceshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;Background Fetch API IDL tests&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/WebIDLParser.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/idlharness.js&quot;&gt;&lt;/script&gt;
+
+&lt;h1&gt;idlharness test&lt;/h1&gt;
+&lt;p&gt;This test validates the WebIDL included in the Background Fetch API (Documents).&lt;/p&gt;
+
+&lt;script&gt;
+'use strict';
+
+promise_test(function() {
+  return fetch('interfaces.idl')
+    .then(response =&gt; response.text())
+    .then(idls =&gt; {
+      var idlArray = new IdlArray();
+      idlArray.add_untested_idls('interface ServiceWorkerRegistration {};');
+      idlArray.add_untested_idls('[Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};');
+      idlArray.add_idls(idls);
+      idlArray.test();
+    });
+}, 'Exposed interfaces in a Document.');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.idl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.idl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.idl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+// 3.1. Extensions to ServiceWorkerRegistration
+
+partial interface ServiceWorkerRegistration {
+  readonly attribute BackgroundFetchManager backgroundFetch;
+};
+
+// 3.2. BackgroundFetchManager
+
+[Exposed=(Window,Worker)]
+interface BackgroundFetchManager {
+  Promise&lt;BackgroundFetchRegistration&gt; fetch(DOMString tag, (RequestInfo or sequence&lt;RequestInfo&gt;) requests, optional BackgroundFetchOptions options);
+  Promise&lt;BackgroundFetchRegistration?&gt; get(DOMString tag);
+  Promise&lt;FrozenArray&lt;DOMString&gt;&gt; getTags();
+  // TODO: in future this should become an async iterator for BackgroundFetchRegistration objects
+};
+
+dictionary BackgroundFetchOptions {
+  sequence&lt;IconDefinition&gt; icons;
+  DOMString title;
+  long totalDownloadSize;
+};
+
+// This is taken from https://w3c.github.io/manifest/#icons-member.
+// This definition should probably be moved somewhere more general.
+dictionary IconDefinition {
+  DOMString src;
+  DOMString sizes;
+  DOMString type;
+};
+
+// 3.3. BackgroundFetchRegistration
+
+[Exposed=(Window,Worker)]
+interface BackgroundFetchRegistration {
+  readonly attribute DOMString tag;
+  readonly attribute FrozenArray&lt;IconDefinition&gt; icons;
+  readonly attribute long totalDownloadSize;
+  readonly attribute DOMString title;
+  readonly attribute FrozenArray&lt;BackgroundFetchActiveFetches&gt; fetches;
+
+  void abort();
+};
+
+[Exposed=(Window,Worker)]
+interface BackgroundFetchFetches {
+  readonly attribute Request request;
+};
+
+[Exposed=(Window,Worker)]
+interface BackgroundFetchActiveFetches : BackgroundFetchFetches {
+  readonly attribute Promise&lt;Response&gt; responseReady;
+  // TODO: this will include fetch controller/observer objects
+};
+
+// 3.4. Events
+
+partial interface ServiceWorkerGlobalScope {
+  attribute EventHandler onbackgroundfetched;
+  attribute EventHandler onbackgroundfetchfail;
+  attribute EventHandler onbackgroundfetchabort;
+  attribute EventHandler onbackgroundfetchclick;
+};
+
+// 3.4.1. BackgroundFetchEvent
+
+[Constructor(DOMString type, BackgroundFetchEventInit init), Exposed=ServiceWorker]
+interface BackgroundFetchEvent : ExtendableEvent {
+  readonly attribute DOMString tag;
+};
+
+dictionary BackgroundFetchEventInit : ExtendableEventInit {
+  required DOMString tag;
+};
+
+// 3.4.2. BackgroundFetchEndEvent
+
+[Constructor(DOMString type, BackgroundFetchEndEventInit init), Exposed=ServiceWorker]
+interface BackgroundFetchEndEvent : BackgroundFetchEvent {
+  readonly attribute FrozenArray&lt;BackgroundFetchSettledFetches&gt; completeFetches;
+
+  Promise&lt;void&gt; updateUI(DOMString title);
+};
+
+dictionary BackgroundFetchEndEventInit : BackgroundFetchEventInit {
+  required BackgroundFetchSettledFetches completeFetches;
+};
+
+[Exposed=ServiceWorker]
+interface BackgroundFetchSettledFetches : BackgroundFetchFetches {
+  readonly attribute Response? response;
+};
+
+// 3.4.3. BackgroundFetchFailEvent
+
+[Constructor(DOMString type, BackgroundFetchEndEventInit init), Exposed=ServiceWorker]
+interface BackgroundFetchFailEvent : BackgroundFetchEndEvent {
+  readonly attribute FrozenArray&lt;BackgroundFetchSettledFetches&gt; failedFetches;
+};
+
+dictionary BackgroundFetchFailEventInit : BackgroundFetchEndEventInit {
+  required BackgroundFetchSettledFetches failedFetches;
+};
+
+// 3.4.4. BackgroundFetchClickEvent
+
+[Constructor(DOMString type, BackgroundFetchEndEventInit init), Exposed=ServiceWorker]
+interface BackgroundFetchClickEvent : BackgroundFetchEvent {
+  readonly attribute BackgroundFetchState state;
+};
+
+dictionary BackgroundFetchClickEventInit : BackgroundFetchEventInit {
+  required BackgroundFetchState state;
+};
+
+enum BackgroundFetchState { &quot;pending&quot;, &quot;succeeded&quot;, &quot;failed&quot; };
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+
+Harness Error (TIMEOUT), message = null
+
+PASS Exposed interfaces in a Service Worker. 
+PASS ServiceWorkerRegistration interface: existence and properties of interface object 
+FAIL ServiceWorkerGlobalScope interface: attribute onbackgroundfetched assert_own_property: self does not have own property &quot;ServiceWorkerGlobalScope&quot; expected property &quot;ServiceWorkerGlobalScope&quot; missing
+FAIL ServiceWorkerGlobalScope interface: attribute onbackgroundfetchfail assert_own_property: self does not have own property &quot;ServiceWorkerGlobalScope&quot; expected property &quot;ServiceWorkerGlobalScope&quot; missing
+FAIL ServiceWorkerGlobalScope interface: attribute onbackgroundfetchabort assert_own_property: self does not have own property &quot;ServiceWorkerGlobalScope&quot; expected property &quot;ServiceWorkerGlobalScope&quot; missing
+FAIL ServiceWorkerGlobalScope interface: attribute onbackgroundfetchclick assert_own_property: self does not have own property &quot;ServiceWorkerGlobalScope&quot; expected property &quot;ServiceWorkerGlobalScope&quot; missing
+FAIL BackgroundFetchManager interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface object length assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface object name assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: operation fetch(DOMString,[object Object],[object Object],BackgroundFetchOptions) assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: operation get(DOMString) assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchManager interface: operation getTags() assert_own_property: self does not have own property &quot;BackgroundFetchManager&quot; expected property &quot;BackgroundFetchManager&quot; missing
+FAIL BackgroundFetchRegistration interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface object length assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface object name assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute tag assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute icons assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute totalDownloadSize assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute title assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: attribute fetches assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchRegistration interface: operation abort() assert_own_property: self does not have own property &quot;BackgroundFetchRegistration&quot; expected property &quot;BackgroundFetchRegistration&quot; missing
+FAIL BackgroundFetchFetches interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface object length assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface object name assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchFetches interface: attribute request assert_own_property: self does not have own property &quot;BackgroundFetchFetches&quot; expected property &quot;BackgroundFetchFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface object length assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface object name assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchActiveFetches interface: attribute responseReady assert_own_property: self does not have own property &quot;BackgroundFetchActiveFetches&quot; expected property &quot;BackgroundFetchActiveFetches&quot; missing
+FAIL BackgroundFetchEvent interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchEvent&quot; expected property &quot;BackgroundFetchEvent&quot; missing
+FAIL BackgroundFetchEvent interface object length assert_own_property: self does not have own property &quot;BackgroundFetchEvent&quot; expected property &quot;BackgroundFetchEvent&quot; missing
+FAIL BackgroundFetchEvent interface object name assert_own_property: self does not have own property &quot;BackgroundFetchEvent&quot; expected property &quot;BackgroundFetchEvent&quot; missing
+FAIL BackgroundFetchEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchEvent&quot; expected property &quot;BackgroundFetchEvent&quot; missing
+FAIL BackgroundFetchEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchEvent&quot; expected property &quot;BackgroundFetchEvent&quot; missing
+FAIL BackgroundFetchEvent interface: attribute tag assert_own_property: self does not have own property &quot;BackgroundFetchEvent&quot; expected property &quot;BackgroundFetchEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface object length assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface object name assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface: attribute completeFetches assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchEndEvent interface: operation updateUI(DOMString) assert_own_property: self does not have own property &quot;BackgroundFetchEndEvent&quot; expected property &quot;BackgroundFetchEndEvent&quot; missing
+FAIL BackgroundFetchSettledFetches interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchSettledFetches&quot; expected property &quot;BackgroundFetchSettledFetches&quot; missing
+FAIL BackgroundFetchSettledFetches interface object length assert_own_property: self does not have own property &quot;BackgroundFetchSettledFetches&quot; expected property &quot;BackgroundFetchSettledFetches&quot; missing
+FAIL BackgroundFetchSettledFetches interface object name assert_own_property: self does not have own property &quot;BackgroundFetchSettledFetches&quot; expected property &quot;BackgroundFetchSettledFetches&quot; missing
+FAIL BackgroundFetchSettledFetches interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchSettledFetches&quot; expected property &quot;BackgroundFetchSettledFetches&quot; missing
+FAIL BackgroundFetchSettledFetches interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchSettledFetches&quot; expected property &quot;BackgroundFetchSettledFetches&quot; missing
+FAIL BackgroundFetchSettledFetches interface: attribute response assert_own_property: self does not have own property &quot;BackgroundFetchSettledFetches&quot; expected property &quot;BackgroundFetchSettledFetches&quot; missing
+FAIL BackgroundFetchFailEvent interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchFailEvent&quot; expected property &quot;BackgroundFetchFailEvent&quot; missing
+FAIL BackgroundFetchFailEvent interface object length assert_own_property: self does not have own property &quot;BackgroundFetchFailEvent&quot; expected property &quot;BackgroundFetchFailEvent&quot; missing
+FAIL BackgroundFetchFailEvent interface object name assert_own_property: self does not have own property &quot;BackgroundFetchFailEvent&quot; expected property &quot;BackgroundFetchFailEvent&quot; missing
+FAIL BackgroundFetchFailEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchFailEvent&quot; expected property &quot;BackgroundFetchFailEvent&quot; missing
+FAIL BackgroundFetchFailEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchFailEvent&quot; expected property &quot;BackgroundFetchFailEvent&quot; missing
+FAIL BackgroundFetchFailEvent interface: attribute failedFetches assert_own_property: self does not have own property &quot;BackgroundFetchFailEvent&quot; expected property &quot;BackgroundFetchFailEvent&quot; missing
+FAIL BackgroundFetchClickEvent interface: existence and properties of interface object assert_own_property: self does not have own property &quot;BackgroundFetchClickEvent&quot; expected property &quot;BackgroundFetchClickEvent&quot; missing
+FAIL BackgroundFetchClickEvent interface object length assert_own_property: self does not have own property &quot;BackgroundFetchClickEvent&quot; expected property &quot;BackgroundFetchClickEvent&quot; missing
+FAIL BackgroundFetchClickEvent interface object name assert_own_property: self does not have own property &quot;BackgroundFetchClickEvent&quot; expected property &quot;BackgroundFetchClickEvent&quot; missing
+FAIL BackgroundFetchClickEvent interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;BackgroundFetchClickEvent&quot; expected property &quot;BackgroundFetchClickEvent&quot; missing
+FAIL BackgroundFetchClickEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;BackgroundFetchClickEvent&quot; expected property &quot;BackgroundFetchClickEvent&quot; missing
+FAIL BackgroundFetchClickEvent interface: attribute state assert_own_property: self does not have own property &quot;BackgroundFetchClickEvent&quot; expected property &quot;BackgroundFetchClickEvent&quot; missing
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchinterfacesworkerjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+'use strict';
+
+importScripts('/resources/testharness.js');
+importScripts('/resources/WebIDLParser.js', '/resources/idlharness.js');
+
+promise_test(function() {
+  return fetch('interfaces.idl')
+    .then(response =&gt; response.text())
+    .then(idls =&gt; {
+      var idlArray = new IdlArray();
+      idlArray.add_untested_idls('interface ServiceWorkerRegistration {};');
+      idlArray.add_untested_idls('[Exposed=ServiceWorker] interface ServiceWorkerGlobalScope {};');
+      idlArray.add_idls(idls);
+      idlArray.test();
+    });
+}, 'Exposed interfaces in a Service Worker.');
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbackgroundfetchw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/background-fetch/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</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/background-fetch/OWNERS
+/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces-worker.https.html
+/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.html
+/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.idl
+/LayoutTests/imported/w3c/web-platform-tests/background-fetch/interfaces.worker.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Test referer header /beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerwhendowngradehttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+FAIL Test referer header https://localhost:9443/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+FAIL Test referer header http://localhost:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerwhendowngradehttpshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header No Referrer When Downgrade Policy&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;meta name='referrer' content='no-referrer-when-downgrade'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/beacon/headers/header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = get_host_info().HTTPS_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerUrl);
+      testBase = get_host_info().HTTP_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, &quot;&quot;);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrernoreferrerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header No Referrer Policy&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;meta name='referrer' content='no-referrer'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = RESOURCES_DIR;
+      testReferrerHeader(testBase, &quot;&quot;);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Test referer header http://127.0.0.1:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginwhencrossoriginexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 8: Failed to set referrer policy: The value 'origin-when-cross-origin' is not one of 'no-referrer', 'origin', 'no-referrer-when-downgrade', or 'unsafe-url'. Defaulting to 'no-referrer'.
+
+FAIL Test referer header http://localhost:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+FAIL Test referer header http://127.0.0.1:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginwhencrossoriginhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header Origin When Cross Origin Policy&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;meta name='referrer' content='origin-when-cross-origin'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = get_host_info().HTTP_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerUrl);
+      testBase = get_host_info().HTTP_REMOTE_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerOrigin);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferreroriginhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header Origin Policy&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;meta name='referrer' content='origin'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = get_host_info().HTTP_REMOTE_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerOrigin);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrersameoriginexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 8: Failed to set referrer policy: The value 'same-origin' is not one of 'no-referrer', 'origin', 'no-referrer-when-downgrade', or 'unsafe-url'. Defaulting to 'no-referrer'.
+
+FAIL Test referer header /beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+FAIL Test referer header http://127.0.0.1:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrersameoriginhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header Same Origin Policy&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;meta name='referrer' content='same-origin'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerUrl);
+      testBase = get_host_info().HTTP_REMOTE_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, &quot;&quot;);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginwhencrossoriginhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 8: Failed to set referrer policy: The value 'strict-origin' is not one of 'no-referrer', 'origin', 'no-referrer-when-downgrade', or 'unsafe-url'. Defaulting to 'no-referrer'.
+
+FAIL Test referer header https://localhost:9443/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+FAIL Test referer header http://localhost:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginwhencrossoriginhttpshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header Strict Origin Policy&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;meta name='referrer' content='strict-origin'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/beacon/headers/header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = get_host_info().HTTPS_ORIGIN +  RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerOrigin);
+      testBase = get_host_info().HTTP_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, &quot;&quot;);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 8: Failed to set referrer policy: The value 'strict-origin' is not one of 'no-referrer', 'origin', 'no-referrer-when-downgrade', or 'unsafe-url'. Defaulting to 'no-referrer'.
+
+FAIL Test referer header https://localhost:9443/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+FAIL Test referer header http://localhost:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerstrictoriginhttpshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header Strict Origin Policy&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;meta name='referrer' content='strict-origin'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/beacon/headers/header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = get_host_info().HTTPS_ORIGIN +  RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerOrigin);
+      testBase = get_host_info().HTTP_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, &quot;&quot;);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerunsafeurlhttpsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Test referer header http://localhost:8800/beacon/resources/ navigator.sendBeacon is not a function. (In 'navigator.sendBeacon(testUrl)', 'navigator.sendBeacon' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerunsafeurlhttpshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;SendBeacon Referrer Header Unsafe Url Policy&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;meta name='referrer' content='unsafe-url'&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/beacon/headers/header-referrer.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+      var testBase = get_host_info().HTTP_ORIGIN + RESOURCES_DIR;
+      testReferrerHeader(testBase, referrerUrl);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersheaderreferrerjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+var RESOURCES_DIR = &quot;/beacon/resources/&quot;;
+
+var referrerOrigin = self.location.origin + '/';
+var referrerUrl = self.location.href;
+
+function testReferrerHeader(testBase, expectedReferrer) {
+  var id = self.token();
+  var testUrl = testBase + &quot;inspect-header.py?header=referer&amp;cmd=put&amp;id=&quot; + id;
+
+  promise_test(function(test) {
+    assert_true(navigator.sendBeacon(testUrl), &quot;SendBeacon Succeeded&quot;);
+    return pollResult(expectedReferrer, id) .then(result =&gt; {
+      assert_equals(result, expectedReferrer, &quot;Correct referrer header result&quot;);
+    });
+  }, &quot;Test referer header &quot; + testBase);
+}
+
+// SendBeacon is an asynchronous and non-blocking request to a web server.
+// We may have to create a poll loop to get result from server
+function pollResult(expectedReferrer, id) {
+  var checkUrl = RESOURCES_DIR + &quot;inspect-header.py?header=referer&amp;cmd=get&amp;id=&quot; + id;
+
+  return new Promise(resolve =&gt; {
+    function checkResult() {
+      fetch(checkUrl).then(
+        function(response) {
+          assert_equals(response.status, 200, &quot;Inspect header response's status is 200&quot;);
+          let result = response.headers.get(&quot;x-request-referer&quot;);
+
+          if (result != undefined) {
+            resolve(result);
+          } else {
+            step_timeout(checkResult.bind(this), 100);
+          }
+        });
+    }
+
+    checkResult();
+  });
+
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconheadersw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</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/beacon/headers/header-referrer-no-referrer-when-downgrade.https.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-no-referrer.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin-when-cross-origin.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-origin.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-same-origin.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin-when-cross-origin.https.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-strict-origin.https.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer-unsafe-url.https.html
+/LayoutTests/imported/w3c/web-platform-tests/beacon/headers/header-referrer.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconresourcesinspectheaderpy"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/inspect-header.py (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/inspect-header.py                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/inspect-header.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+def main(request, response):
+    headers = [(&quot;Content-Type&quot;, &quot;text/plain&quot;)]
+    command = request.GET.first(&quot;cmd&quot;).lower();
+    test_id = request.GET.first(&quot;id&quot;)
+    header = request.GET.first(&quot;header&quot;)
+    if command == &quot;put&quot;:
+        request.server.stash.put(test_id, request.headers.get(header, &quot;&quot;))
+
+    elif command == &quot;get&quot;:
+        stashed_header = request.server.stash.take(test_id)
+        if stashed_header is not None:
+            headers.append((&quot;x-request-&quot; + header, stashed_header ))
+
+    else:
+        response.set_error(400, &quot;Bad Command&quot;)
+        return &quot;ERROR: Bad Command!&quot;
+
+    return headers, &quot;&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsbeaconresourcesw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/beacon/resources/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</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/beacon/resources/inspect-header.py
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscheck_stabilitypy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/check_stability.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -311,7 +311,8 @@
</span><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><del>-            return subprocess.check_output(full_cmd, cwd=repo_path, stderr=subprocess.STDOUT)
</del><ins>+            logger.debug(&quot; &quot;.join(full_cmd))
+            return subprocess.check_output(full_cmd, cwd=repo_path, stderr=subprocess.STDOUT).strip()
</ins><span class="cx">         except subprocess.CalledProcessError as e:
</span><span class="cx">             logger.error(&quot;Git command exited with status %i&quot; % e.returncode)
</span><span class="cx">             logger.error(e.output)
</span><span class="lines">@@ -363,10 +364,9 @@
</span><span class="cx">         self.old_dir = None
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def fetch_wpt_master(user):
-    &quot;&quot;&quot;Fetch the master branch via git.&quot;&quot;&quot;
</del><ins>+def fetch_wpt(user, *args):
</ins><span class="cx">     git = get_git_cmd(wpt_root)
</span><del>-    git(&quot;fetch&quot;, &quot;https://github.com/%s/web-platform-tests.git&quot; % user, &quot;master:master&quot;)
</del><ins>+    git(&quot;fetch&quot;, &quot;https://github.com/%s/web-platform-tests.git&quot; % user, *args)
</ins><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> def get_sha1():
</span><span class="lines">@@ -390,13 +390,60 @@
</span><span class="cx">     call(&quot;pip&quot;, &quot;install&quot;, wptrunner_root)
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-def get_files_changed():
</del><ins>+def get_branch_point(user):
+    git = get_git_cmd(wpt_root)
+    if os.environ.get(&quot;TRAVIS_PULL_REQUEST&quot;, &quot;false&quot;) != &quot;false&quot;:
+        # This is a PR, so the base branch is in TRAVIS_BRANCH
+        travis_branch = os.environ.get(&quot;TRAVIS_BRANCH&quot;)
+        assert travis_branch, &quot;TRAVIS_BRANCH environment variable is defined&quot;
+        branch_point = git(&quot;rev-parse&quot;, travis_branch)
+    else:
+        # Otherwise we aren't on a PR, so we try to find commits that are only in the
+        # current branch c.f.
+        # http://stackoverflow.com/questions/13460152/find-first-ancestor-commit-in-another-branch
+        head = git(&quot;rev-parse&quot;, &quot;HEAD&quot;)
+        # To do this we need all the commits in the local copy
+        fetch_args = [user, &quot;+refs/heads/*:refs/remotes/origin/*&quot;]
+        if os.path.exists(os.path.join(wpt_root, &quot;.git&quot;, &quot;shallow&quot;)):
+            fetch_args.insert(1, &quot;--unshallow&quot;)
+        fetch_wpt(*fetch_args)
+        not_heads = [item for item in git(&quot;rev-parse&quot;, &quot;--not&quot;, &quot;--all&quot;).split(&quot;\n&quot;)
+                     if item.strip() and not head in item]
+        commits = git(&quot;rev-list&quot;, &quot;HEAD&quot;, *not_heads).split(&quot;\n&quot;)
+        branch_point = None
+        if len(commits):
+            first_commit = commits[-1]
+            if first_commit:
+                branch_point = git(&quot;rev-parse&quot;, first_commit + &quot;^&quot;)
+
+        # The above heuristic will fail in the following cases:
+        #
+        # - The current branch has fallen behind the version retrieved via the above
+        #   `fetch` invocation
+        # - Changes on the current branch were rebased and therefore do not exist on any
+        #   other branch. This will result in the selection of a commit that is earlier
+        #   in the history than desired (as determined by calculating the later of the
+        #   branch point and the merge base)
+        #
+        # In either case, fall back to using the merge base as the branch point.
+        merge_base = git(&quot;merge-base&quot;, &quot;HEAD&quot;, &quot;origin/master&quot;)
+        if (branch_point is None or
+            (branch_point != merge_base and
+             not git(&quot;log&quot;, &quot;--oneline&quot;, &quot;%s..%s&quot; % (merge_base, branch_point)).strip())):
+            logger.debug(&quot;Using merge-base as the branch point&quot;)
+            branch_point = merge_base
+        else:
+            logger.debug(&quot;Using first commit on another branch as the branch point&quot;)
+
+    logger.debug(&quot;Branch point from master: %s&quot; % branch_point)
+    return branch_point
+
+
+def get_files_changed(branch_point):
</ins><span class="cx">     &quot;&quot;&quot;Get and return files changed since current branch diverged from master.&quot;&quot;&quot;
</span><span class="cx">     root = os.path.abspath(os.curdir)
</span><span class="cx">     git = get_git_cmd(wpt_root)
</span><del>-    branch_point = git(&quot;merge-base&quot;, &quot;HEAD&quot;, &quot;master&quot;).strip()
-    logger.debug(&quot;Branch point from master: %s&quot; % branch_point)
-    files = git(&quot;diff&quot;, &quot;--name-only&quot;, &quot;-z&quot;, &quot;%s..&quot; % branch_point)
</del><ins>+    files = git(&quot;diff&quot;, &quot;--name-only&quot;, &quot;-z&quot;, &quot;%s...&quot; % branch_point)
</ins><span class="cx">     if not files:
</span><span class="cx">         return []
</span><span class="cx">     assert files[-1] == &quot;\0&quot;
</span><span class="lines">@@ -557,7 +604,7 @@
</span><span class="cx">     results = handler.results
</span><span class="cx">     for test_name, test in results.iteritems():
</span><span class="cx">         if is_inconsistent(test[&quot;status&quot;], iterations):
</span><del>-            inconsistent.append((test_name, None, test[&quot;status&quot;], None))
</del><ins>+            inconsistent.append((test_name, None, test[&quot;status&quot;], []))
</ins><span class="cx">         for subtest_name, subtest in test[&quot;subtests&quot;].iteritems():
</span><span class="cx">             if is_inconsistent(subtest[&quot;status&quot;], iterations):
</span><span class="cx">                 inconsistent.append((test_name, subtest_name, subtest[&quot;status&quot;], subtest[&quot;messages&quot;]))
</span><span class="lines">@@ -584,7 +631,7 @@
</span><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><del>-    s = s.replace('`',  u'\\`')
</del><ins>+    s = s.replace('`',  u'')
</ins><span class="cx">     return s
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="lines">@@ -677,7 +724,7 @@
</span><span class="cx">                         action=&quot;store&quot;,
</span><span class="cx">                         # Travis docs say do not depend on USER env variable.
</span><span class="cx">                         # This is a workaround to get what should be the same value
</span><del>-                        default=os.environ.get(&quot;TRAVIS_REPO_SLUG&quot;).split('/')[0],
</del><ins>+                        default=os.environ.get(&quot;TRAVIS_REPO_SLUG&quot;, &quot;w3c&quot;).split('/')[0],
</ins><span class="cx">                         help=&quot;Travis user name&quot;)
</span><span class="cx">     parser.add_argument(&quot;--output-bytes&quot;,
</span><span class="cx">                         action=&quot;store&quot;,
</span><span class="lines">@@ -726,14 +773,16 @@
</span><span class="cx">             logger.critical(&quot;Unrecognised browser %s&quot; % browser_name)
</span><span class="cx">             return 1
</span><span class="cx"> 
</span><del>-        fetch_wpt_master(args.user)
</del><ins>+        fetch_wpt(args.user, &quot;master:master&quot;)
</ins><span class="cx"> 
</span><span class="cx">         head_sha1 = get_sha1()
</span><span class="cx">         logger.info(&quot;Testing web-platform-tests at revision %s&quot; % head_sha1)
</span><span class="cx"> 
</span><ins>+        branch_point = get_branch_point(args.user)
+
</ins><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><del>-        files_changed = get_files_changed()
</del><ins>+        files_changed = get_files_changed(branch_point)
</ins><span class="cx"> 
</span><span class="cx">         if not files_changed:
</span><span class="cx">             logger.info(&quot;No files changed&quot;)
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsci_lintsh"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/ci_lint.sh (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/ci_lint.sh        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/ci_lint.sh        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,4 +2,3 @@
</span><span class="cx"> 
</span><span class="cx"> ./manifest
</span><span class="cx"> ./lint
</span><del>-./diff-manifest.py
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsallowheadersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -52,41 +52,41 @@
</span><span class="cx"> FAIL Allow origin: _http://localhost:8800 The operation was aborted.
</span><span class="cx"> FAIL Allow origin: _http://localhost:8800___[tab]_ The operation was aborted.
</span><span class="cx"> FAIL Allow origin: [tab]http://localhost:8800 The operation was aborted.
</span><del>-PASS Disallow origin: http://www1.localhost:8800 
-PASS Disallow origin: //localhost:8800 
-PASS Disallow origin: ://localhost:8800 
-PASS Disallow origin: ftp://localhost:8800 
-PASS Disallow origin: http:://localhost:8800 
-PASS Disallow origin: http:/localhost:8800 
-PASS Disallow origin: http:localhost:8800 
-PASS Disallow origin: localhost:8800 
-PASS Disallow origin: http://localhost:8800? 
-PASS Disallow origin: http://localhost:8800/ 
-PASS Disallow origin: http://localhost:8800 / 
-PASS Disallow origin: http://localhost:8800# 
-PASS Disallow origin: http://localhost:8800%23 
-PASS Disallow origin: http://localhost:8800:80 
-PASS Disallow origin: http://localhost:8800, * 
-PASS Disallow origin: http://localhost:8800\0 
-PASS Disallow origin: HTTP://LOCALHOST:8800 
-PASS Disallow origin: HTTP://localhost:8800 
-PASS Disallow origin: - 
-PASS Disallow origin: ** 
-PASS Disallow origin: \0* 
-PASS Disallow origin: *\0 
-PASS Disallow origin: '*' 
-PASS Disallow origin: &quot;*&quot; 
-PASS Disallow origin: * * 
-PASS Disallow origin: *http://* 
-PASS Disallow origin: *http://localhost:8800 
-PASS Disallow origin: * http://localhost:8800 
-PASS Disallow origin: *, http://localhost:8800 
-PASS Disallow origin: \0http://localhost:8800 
-PASS Disallow origin: null http://localhost:8800 
-PASS Disallow origin: http://example.net 
-PASS Disallow origin: null 
-PASS Disallow origin:  
-PASS Disallow origin: http://localhost:8800/cors/allow-headers.htm 
-PASS Disallow origin: http://localhost:8800/cors/ 
-PASS Disallow origin: http://www1.localhost:8800/cors/ 
</del><ins>+FAIL Disallow origin: http://www1.localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: //localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: ://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: ftp://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http:://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http:/localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http:localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800? assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800/ assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800 / assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800# assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800%23 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800:80 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800, * assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800\0 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: HTTP://LOCALHOST:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: HTTP://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: - assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: ** assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: \0* assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *\0 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: '*' assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: &quot;*&quot; assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: * * assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *http://* assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: * http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *, http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: \0http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: null http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://example.net assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: null assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin:  assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800/cors/allow-headers.htm assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800/cors/ assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://www1.localhost:8800/cors/ assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsallowheadershtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/allow-headers.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx">                             + '/resources/cors-makeheader.py?origin='
</span><span class="cx">                             + encodeURIComponent(origin),
</span><span class="cx">                     false)
</span><del>-        assert_throws(null, function() { client.send() }, 'send')
</del><ins>+        assert_throws(&quot;NetworkError&quot;, function() { client.send() }, 'send')
</ins><span class="cx">     }, 'Disallow origin: ' + origin.replace('\0', '\\0'));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -66,55 +66,55 @@
</span><span class="cx"> FAIL Allow origin: _http://localhost:8800 The operation was aborted.
</span><span class="cx"> FAIL Allow origin: _http://localhost:8800___[tab]_ The operation was aborted.
</span><span class="cx"> FAIL Allow origin: [tab]http://localhost:8800 The operation was aborted.
</span><del>-PASS Disallow origin: http://www1.localhost:8800 
-PASS Disallow origin: //localhost:8800 
-PASS Disallow origin: ://localhost:8800 
-PASS Disallow origin: ftp://localhost:8800 
-PASS Disallow origin: http:://localhost:8800 
-PASS Disallow origin: http:/localhost:8800 
-PASS Disallow origin: http:localhost:8800 
-PASS Disallow origin: localhost:8800 
-PASS Disallow origin: http://localhost:8800? 
-PASS Disallow origin: http://localhost:8800/ 
-PASS Disallow origin: http://localhost:8800 / 
-PASS Disallow origin: http://localhost:8800# 
-PASS Disallow origin: http://localhost:8800%23 
-PASS Disallow origin: http://localhost:8800:80 
-PASS Disallow origin: http://localhost:8800, * 
-PASS Disallow origin: http://localhost:8800\0 
-PASS Disallow origin: HTTP://LOCALHOST:8800 
-PASS Disallow origin: HTTP://localhost:8800 
-PASS Disallow origin: - 
-PASS Disallow origin: ** 
-PASS Disallow origin: \0* 
-PASS Disallow origin: *\0 
-PASS Disallow origin: '*' 
-PASS Disallow origin: &quot;*&quot; 
-PASS Disallow origin: * * 
-PASS Disallow origin: * null 
-PASS Disallow origin: *http://* 
-PASS Disallow origin: *http://localhost:8800 
-PASS Disallow origin: * http://localhost:8800 
-PASS Disallow origin: *, http://localhost:8800 
-PASS Disallow origin: \0http://localhost:8800 
-PASS Disallow origin: null http://localhost:8800 
-PASS Disallow origin: http://example.net 
-PASS Disallow origin: null 
-PASS Disallow origin: null * 
-PASS Disallow origin:  
-PASS Disallow origin: http://localhost:8800/cors/origin.htm 
-PASS Disallow origin: http://localhost:8800/cors/ 
-PASS Disallow origin: http://www1.localhost:8800/cors/ 
-PASS Disallow origin: localhost:8800 
-PASS Disallow origin: .localhost:8800 
-PASS Disallow origin: *.localhost:8800 
-PASS Disallow origin: http://localhost:8800 
-PASS Disallow origin: http://.localhost:8800 
-PASS Disallow origin: http://*.localhost:8800 
-PASS Disallow multiple headers (, *) 
-PASS Disallow multiple headers (*, ) 
-PASS Disallow multiple headers (*, *) 
-PASS Disallow multiple headers (, http://localhost:8800) 
-PASS Disallow multiple headers (*, http://localhost:8800) 
-PASS Disallow multiple headers (http://localhost:8800, http://localhost:8800) 
</del><ins>+FAIL Disallow origin: http://www1.localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: //localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: ://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: ftp://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http:://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http:/localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http:localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800? assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800/ assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800 / assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800# assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800%23 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800:80 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800, * assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800\0 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: HTTP://LOCALHOST:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: HTTP://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: - assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: ** assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: \0* assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *\0 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: '*' assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: &quot;*&quot; assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: * * assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: * null assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *http://* assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: * http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *, http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: \0http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: null http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://example.net assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: null assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: null * assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin:  assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800/cors/origin.htm assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800/cors/ assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://www1.localhost:8800/cors/ assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: .localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: *.localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://.localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow origin: http://*.localhost:8800 assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow multiple headers (, *) assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow multiple headers (*, ) assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow multiple headers (*, *) assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow multiple headers (, http://localhost:8800) assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow multiple headers (*, http://localhost:8800) assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
+FAIL Disallow multiple headers (http://localhost:8800, http://localhost:8800) assert_throws: send function &quot;function () { client.send() }&quot; threw object &quot;AbortError (DOM Exception 20): The operation was aborted.&quot; that is not a DOMException NetworkError: property &quot;code&quot; is equal to 20, expected 19
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsoriginhtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/origin.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">                             + '/resources/cors-makeheader.py?origin='
</span><span class="cx">                             + encodeURIComponent(origin),
</span><span class="cx">                     false)
</span><del>-        assert_throws(null, function() { client.send() }, 'send')
</del><ins>+        assert_throws(&quot;NetworkError&quot;, function() { client.send() }, 'send')
</ins><span class="cx">     }, 'Disallow origin: ' + origin.replace(/\0/g, &quot;\\0&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">                             + encodeURIComponent(origin)
</span><span class="cx">                             + '&amp;origin2=' + encodeURIComponent(origin2),
</span><span class="cx">                     false)
</span><del>-        assert_throws(null, function() { client.send() }, 'send')
</del><ins>+        assert_throws(&quot;NetworkError&quot;, function() { client.send() }, 'send')
</ins><span class="cx">     }, 'Disallow multiple headers (' + origin + ', ' + origin2 + ')');
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorspreflightfailurehtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/preflight-failure.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/preflight-failure.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/preflight-failure.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx"> 
</span><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><del>-&lt;script src=support.js?pipe=sub&gt;&lt;/script&gt;
</del><ins>+&lt;script src=/common/get-host-info.sub.js&gt;&lt;/script&gt;
</ins><span class="cx"> 
</span><span class="cx"> &lt;h1&gt;Preflight responds with non-2XX status code&lt;/h1&gt;
</span><span class="cx"> 
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx"> // analyzer.
</span><span class="cx"> var req_c = 0;
</span><span class="cx"> 
</span><del>-var CROSSDOMAIN_URL = CROSSDOMAIN + 'resources/cors-makeheader.py?';
</del><ins>+var CROSSDOMAIN_URL = get_host_info().HTTP_REMOTE_ORIGIN + '/cors/resources/cors-makeheader.py?';
</ins><span class="cx"> 
</span><span class="cx"> /*
</span><span class="cx">  * Redirection with preflights.
</span><span class="lines">@@ -28,6 +28,8 @@
</span><span class="cx">     var redirect =
</span><span class="cx">       encodeURIComponent(CROSSDOMAIN_URL + 'headers=x-test&amp;' + req_c++);
</span><span class="cx"> 
</span><ins>+    var isCodeOK = code &gt;= 200 &amp;&amp; code &lt;= 299;
+
</ins><span class="cx">     client.open('GET',
</span><span class="cx">         CROSSDOMAIN_URL + 'headers=x-test&amp;location=' + redirect
</span><span class="cx">         + '&amp;code=' + code + '&amp;preflight=' + code
</span><span class="lines">@@ -35,20 +37,25 @@
</span><span class="cx">         true /* async */);
</span><span class="cx">     client.setRequestHeader('x-test', 'test');
</span><span class="cx">     client.onerror = this.step_func(function() {
</span><ins>+      assert_false(isCodeOK);
</ins><span class="cx">       this.done();
</span><span class="cx">     });
</span><span class="cx">     client.onreadystatechange = this.step_func(function() {
</span><del>-      assert_equals(client.status, 0);
</del><ins>+      if (!isCodeOK)
+        assert_equals(client.status, 0);
</ins><span class="cx">     });
</span><span class="cx">     client.onload = this.step_func(function() {
</span><del>-      assert_unreached('Unexpected onload');
</del><ins>+      assert_true(isCodeOK);
+      this.done();
</ins><span class="cx">     });
</span><span class="cx">     client.send(null);
</span><span class="cx">   });
</span><span class="cx"> }
</span><span class="cx"> [100, 101,
</span><ins>+ 200,
</ins><span class="cx">  300, 301, 302, 303, 304, 305, 306, 307, 308,
</span><span class="cx">  400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
</span><del>- 500, 501, 502, 503, 504, 505].forEach(preflight_failure);
</del><ins>+ 500, 501, 502, 503, 504, 505
+].forEach(preflight_failure);
</ins><span class="cx"> 
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsredirectuserinfoexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,22 +1,22 @@
</span><span class="cx"> Blocked access to external URL http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Ftest%3Atest%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%260_1&amp;0_0
</span><del>-CONSOLE MESSAGE: line 61: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Ftest%3Atest%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%260_1&amp;0_0 due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 57: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Ftest%3Atest%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%260_1&amp;0_0 due to access control checks.
</ins><span class="cx"> Blocked access to external URL http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Fuser%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%261_1&amp;1_0
</span><del>-CONSOLE MESSAGE: line 61: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Fuser%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%261_1&amp;1_0 due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 57: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Fuser%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%261_1&amp;1_0 due to access control checks.
</ins><span class="cx"> Blocked access to external URL http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Fuser%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%262_1&amp;2_0
</span><del>-CONSOLE MESSAGE: line 61: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Fuser%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%262_1&amp;2_0 due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 57: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2Fuser%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%262_1&amp;2_0 due to access control checks.
</ins><span class="cx"> Blocked access to external URL http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%263_1&amp;3_0
</span><del>-CONSOLE MESSAGE: line 61: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%263_1&amp;3_0 due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 77: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%3A%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%263_1&amp;3_0 due to access control checks.
</ins><span class="cx"> Blocked access to external URL http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%3Apass%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%264_1&amp;4_0
</span><del>-CONSOLE MESSAGE: line 61: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%3Apass%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%264_1&amp;4_0 due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 57: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%3Apass%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%264_1&amp;4_0 due to access control checks.
</ins><span class="cx"> Blocked access to external URL http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%265_1&amp;5_0
</span><del>-CONSOLE MESSAGE: line 84: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%265_1&amp;5_0 due to access control checks.
</del><ins>+CONSOLE MESSAGE: line 77: XMLHttpRequest cannot load http://www1.localhost:8800/cors/resources/cors-makeheader.py?&amp;location=http%3A%2F%2F%40www1.localhost%3A8800%2Fcors%2Fresources%2Fcors-makeheader.py%3F%26get_value%3Dlast%265_1&amp;5_0 due to access control checks.
</ins><span class="cx"> CORS userinfo redirect handling
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-PASS Disallow redirect with userinfo (//user:pass@) 
-PASS Disallow redirect with userinfo (//user:@) 
-PASS Disallow redirect with userinfo (//user@) 
-PASS Disallow redirect with userinfo (//:@) 
-PASS Disallow redirect with userinfo (//:pass@) 
-FAIL Allow redirect with userinfo (//@) assert_true: Got response expected true got false
</del><ins>+PASS Disallow redirect with userinfo (user:pass@) 
+PASS Disallow redirect with userinfo (user:@) 
+PASS Disallow redirect with userinfo (user@) 
+FAIL Allow redirect without userinfo (:@ is trimmed during URL parsing) assert_unreached: Reached unreachable code
+PASS Disallow redirect with userinfo (:pass@) 
+FAIL Allow redirect without userinfo (@ is trimmed during URL parsing) assert_unreached: Reached unreachable code
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsredirectuserinfohtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/redirect-userinfo.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -16,27 +16,27 @@
</span><span class="cx">     // Test count for cache busting and easy identifying of request in traffic analyzer
</span><span class="cx">     var num_test = 0
</span><span class="cx"> 
</span><del>-    shouldFail(&quot;Disallow redirect with userinfo (//user:pass@)&quot;, [
</del><ins>+    shouldFail(&quot;Disallow redirect with userinfo (user:pass@)&quot;, [
</ins><span class="cx">                     CROSSDOMAIN + &quot;resources/cors-makeheader.py?&quot;,
</span><span class="cx">                     CROSSDOMAIN.replace(&quot;http://&quot;, &quot;http://test:test@&quot;) + &quot;resources/cors-makeheader.py?&quot;]);
</span><span class="cx"> 
</span><del>-    shouldFail(&quot;Disallow redirect with userinfo (//user:@)&quot;, [
</del><ins>+    shouldFail(&quot;Disallow redirect with userinfo (user:@)&quot;, [
</ins><span class="cx">                     CROSSDOMAIN + &quot;resources/cors-makeheader.py?&quot;,
</span><span class="cx">                     CROSSDOMAIN.replace(&quot;http://&quot;, &quot;http://user:@&quot;) + &quot;resources/cors-makeheader.py?&quot;]);
</span><span class="cx"> 
</span><del>-    shouldFail(&quot;Disallow redirect with userinfo (//user@)&quot;, [
</del><ins>+    shouldFail(&quot;Disallow redirect with userinfo (user@)&quot;, [
</ins><span class="cx">                     CROSSDOMAIN + &quot;resources/cors-makeheader.py?&quot;,
</span><span class="cx">                     CROSSDOMAIN.replace(&quot;http://&quot;, &quot;http://user:@&quot;) + &quot;resources/cors-makeheader.py?&quot;]);
</span><span class="cx"> 
</span><del>-    shouldFail(&quot;Disallow redirect with userinfo (//:@)&quot;, [
</del><ins>+    shouldPass(&quot;Allow redirect without userinfo (:@ is trimmed during URL parsing)&quot;, [
</ins><span class="cx">                     CROSSDOMAIN + &quot;resources/cors-makeheader.py?&quot;,
</span><span class="cx">                     CROSSDOMAIN.replace(&quot;http://&quot;, &quot;http://:@&quot;) + &quot;resources/cors-makeheader.py?&quot;]);
</span><span class="cx"> 
</span><del>-    shouldFail(&quot;Disallow redirect with userinfo (//:pass@)&quot;, [
</del><ins>+    shouldFail(&quot;Disallow redirect with userinfo (:pass@)&quot;, [
</ins><span class="cx">                     CROSSDOMAIN + &quot;resources/cors-makeheader.py?&quot;,
</span><span class="cx">                     CROSSDOMAIN.replace(&quot;http://&quot;, &quot;http://:pass@&quot;) + &quot;resources/cors-makeheader.py?&quot;]);
</span><span class="cx"> 
</span><del>-    shouldPass(&quot;Allow redirect with userinfo (//@)&quot;, [
</del><ins>+    shouldPass(&quot;Allow redirect without userinfo (@ is trimmed during URL parsing)&quot;, [
</ins><span class="cx">                     CROSSDOMAIN + &quot;resources/cors-makeheader.py?&quot;,
</span><span class="cx">                     CROSSDOMAIN.replace(&quot;http://&quot;, &quot;http://@&quot;) + &quot;resources/cors-makeheader.py?&quot;]);
</span><span class="cx"> 
</span><span class="lines">@@ -51,12 +51,8 @@
</span><span class="cx"> 
</span><span class="cx">             client.open('GET', buildURL(urls, test_id));
</span><span class="cx"> 
</span><del>-            client.onload = t.step_func(function() {
-                assert_false(!!client.response, &quot;Got response&quot;);
-            });
-            client.onerror = t.step_func(function(e) {
-                t.done();
-            });
</del><ins>+            client.onload = t.unreached_func();
+            client.onerror = t.step_func_done();
</ins><span class="cx"> 
</span><span class="cx">             client.send(null)
</span><span class="cx">         });
</span><span class="lines">@@ -73,14 +69,11 @@
</span><span class="cx"> 
</span><span class="cx">             client.open('GET', buildURL(urls, test_id));
</span><span class="cx"> 
</span><del>-            client.onreadystatechange = t.step_func(function() {
-                if (client.readyState != client.DONE)
-                    return;
-                assert_true(!!client.response, &quot;Got response&quot;);
</del><ins>+            client.onload = t.step_func_done(function() {
</ins><span class="cx">                 r = JSON.parse(client.response)
</span><span class="cx">                 assert_equals(r['get_value'], 'last', 'get_value')
</span><del>-                t.done();
</del><span class="cx">             });
</span><ins>+            client.onerror = t.unreached_func()
</ins><span class="cx">             client.send(null)
</span><span class="cx">         });
</span><span class="cx">     }
</span><span class="lines">@@ -88,10 +81,6 @@
</span><span class="cx">     function buildURL(urls, id) {
</span><span class="cx">         var tmp_url;
</span><span class="cx"> 
</span><del>-        if (typeof(urls) == &quot;string&quot;) {
-            return urls + &quot;&amp;&quot; + id + &quot;_0&quot;;
-        }
-
</del><span class="cx">         for (var i = urls.length; i--; ) {
</span><span class="cx">             if (!tmp_url)
</span><span class="cx">             {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscorsrequestheadershtm"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/cors/request-headers.htm (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/cors/request-headers.htm        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/cors/request-headers.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx">     client.open('GET', CROSSDOMAIN + 'resources/cors-makeheader.py?headers=x-print', false)
</span><span class="cx">     client.setRequestHeader('x-print', 'unicorn')
</span><span class="cx">     client.setRequestHeader('y-print', 'unicorn')
</span><del>-    assert_throws(null, function() { client.send(null) })
</del><ins>+    assert_throws(&quot;NetworkError&quot;, function() { client.send(null) })
</ins><span class="cx"> }, 'Unspecified request headers are disallowed')
</span><span class="cx"> 
</span><span class="cx"> test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsshtaccess"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/.htaccess (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/.htaccess                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/.htaccess        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+HeaderName README.md
+ReadmeName none
+
+# README is returned as text/plain anyway, but this is needed to
+# make it show up.
+
+&lt;Files &quot;README.md&quot;&gt;
+ForceType text/plain
+&lt;/Files&gt;
+
+# Define some types
+AddType application/xhtml+xml .xht
+AddType text/html .htm
+AddType text/css .css
+AddType image/png .png
+
+# Set the default character set
+AddDefaultCharset utf-8
+
+# Set up useful directory indexes
+# Indexing Options
+Options +Indexes +MultiViews
+IndexOptions DescriptionWidth=* NameWidth=* FancyIndexing FoldersFirst ScanHTMLTitles
+IndexIgnore .htaccess *~ .#* #*# CVS README.md .svn
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscssOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/OWNERS (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+@gsnedders
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscssREADMEmd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/README.md (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/README.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/README.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,74 @@
</span><ins>+Introduction
+------------
+
+This directory contains all testsuites for all CSS specifications still using
+the [CSS test harness][harness].
+
+As the test harness relies on the largely undocumented(!) old CSS build system,
+this directory has a number of test requirements specific to it:
+
+ * support files for a given test must live in an adjacent `support` directory;
+
+ * tests must have a [`&lt;link rel=help&gt;`][spec-link] pointing to what they are
+   testing;
+
+ * for each spec so linked, test filenames must be unique; and
+
+ * support and reference files must have unique filenames within the entire
+   `css` directory.
+
+
+Odd Directories
+---------------
+
+There are a few special directories that do not map to specifications:
+
+vendor-imports/ is a legacy directory where third parties historically imported
+their tests that originate and are maintained in an external repo. Files in
+this directory should never be modified in this repo, but should go through the
+vendor's process to be imported here.
+
+work-in-progress/ is a legacy directory that contains all the work that was
+once submitted to the repo, but was not yet ready for review. As pull requests
+are now used, no new files should be added here. The subdirectories here are
+named by test author or contributing organization.
+
+
+Importing Old Branches
+----------------------
+
+Given an old branch in git based against the old csswg-test
+repository, it can be moved over to the merged repo in one of two
+ways:
+
+ * (Recommended:) Rebasing on top of web-platform-tests: with the old
+   branch checked out, run `git rebase -Xsubtree=css/ origin/master`
+   (or similar, depending on the name of the upstream remote).
+
+ * Merging to web-platform-tests: with web-platform-tests' master
+   branch checked out, run `git merge -Xsubtree=css/ my_shiny_branch`
+   (or similar, depending on the name of your branch).
+
+If you have a branch/bookmark in Mercurial, the process is more
+complicated:
+
+ 1. From the Mercurial repo, run `hg export --git -r 'outgoing()' &gt;
+    foo.patch`. This will export all the changeset shown in `hg log -r
+    'outgoing()'`; it's recommended you check this is the right set of
+    changesets before continuing!
+
+ 2. Move to the git repo, and create a new branch based on
+    web-platform-tests' master; e.g., `git checkout -b hg-import
+    origin/master` (or similar, depending on the name of the upstream
+    remote).
+
+ 3. Download [hg-patch-to-git-patch][] and run `python2
+    hg-patch-to-git-patch &lt; foo.patch &gt; bar.patch` (where `foo.patch`
+    is the path to the `foo.patch` you exported above).
+
+ 4. Run `git am --directory=css/ &lt; bar.patch`.
+
+
+[harness]: https://test.csswg.org/harness/
+[spec-link]: http://web-platform-tests.org/writing-tests/css-metadata.html#specification-links
+[hg-patch-to-git-patch]: https://raw.githubusercontent.com/mozilla/moz-git-tools/master/hg-patch-to-git-patch
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscssbuildcsstestsuitessh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/build-css-testsuites.sh (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/build-css-testsuites.sh                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/build-css-testsuites.sh        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+#!/usr/bin/env sh
+set -ex
+
+cd &quot;`dirname $0`&quot;
+
+if [ -z $VENV ]; then
+    VENV=tools/_virtualenv
+fi
+
+# Create the virtualenv
+if [ ! -d $VENV ]; then
+    if [ -z $PYTHON ]; then
+        command -v python
+        if [ $? -eq 0 ]; then
+            if [ `python -c 'import sys; print(sys.version[0:3])'` == &quot;2.7&quot; ]; then
+                PYTHON=python
+            fi
+        fi
+    fi
+
+    if [ -z $PYTHON ]; then
+        command -v python2
+        if [ $? -eq 0 ]; then
+            PYTHON=python2
+        fi
+    fi
+
+    if [ -z $PYTHON ]; then
+        echo &quot;Please ensure Python 2.7 is installed&quot;
+        exit 1
+    fi
+
+    virtualenv -p $PYTHON $VENV || { echo &quot;Please ensure virtualenv is installed&quot;; exit 2; }
+fi
+
+# Install dependencies
+$VENV/bin/pip install -r requirements.txt
+
+# Fetch hg submodules if they're not there
+if [ ! -d tools/apiclient ]; then
+    $VENV/bin/hg clone https://hg.csswg.org/dev/apiclient tools/apiclient
+fi
+
+if [ ! -d tools/w3ctestlib ]; then
+    $VENV/bin/hg clone https://hg.csswg.org/dev/w3ctestlib tools/w3ctestlib
+fi
+
+# Run the build script
+$VENV/bin/python tools/build.py &quot;$@&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportflexiblelengths001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-flexible-lengths-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#fr-unit&quot; title=&quot;5.1.3 Flexible Lengths: the fr unit&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-columns' and 'grid-template-rows' properties support flexible lengths (the 'fr' unit) within an inline grid, so you can use it to represent a fraction of the free space in the grid container.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .inline-grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportgridtemplateareas001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-areas-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-areas-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-areas-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#grid-template-areas-property&quot; title=&quot;5.2 Named Areas: the 'grid-template-areas' property&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-areas' is supported in an inline grid. So you can define the grid structure.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             #grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportgridtemplatecolumnsrows001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-columns-rows-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-columns-rows-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-grid-template-columns-rows-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#track-sizing&quot; title=&quot;5.1 Track Sizing: the 'grid-template-rows' and 'grid-template-columns' properties&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-columns' and 'grid-template-rows' properties are supported in an inline grid. So you can use the different syntax options to define the trak list.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .inline-grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportnamedgridlines001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-named-grid-lines-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-named-grid-lines-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-named-grid-lines-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#named-lines&quot; title=&quot;5.1.1. Named Grid Lines: the '(&amp;lt;custom-ident\&amp;gt;*)' syntax&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that grid lines can be explicitly named in 'grid-template-columns' and 'grid-template-rows' properties within an inline grid.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .inline-grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinesupportrepeat001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-repeat-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-repeat-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-support-repeat-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#repeat-notation&quot; title=&quot;5.1.2 Repeating Rows and Columns: the 'repeat()' notation&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-columns' and 'grid-template-rows' properties support 'repeat()' notation within an inline grid, so you can use it to represents a repeated fragment of the track list.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .inline-grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridinlinetemplatecolumnsrowsresolvedvalues001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-inline-template-columns-rows-resolved-values-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#resolved-track-list&quot; title=&quot;5.1.5. Resolved Values&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that resolved values for 'grid-template-columns' and 'grid-template-rows' list tracks implicitly created in an inline grid.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .inline-grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportflexiblelengths001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-flexible-lengths-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#fr-unit&quot; title=&quot;5.1.3 Flexible Lengths: the fr unit&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-columns' and 'grid-template-rows' properties support flexible lengths (the 'fr' unit), so you can use it to represent a fraction of the free space in the grid container.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportgridtemplateareas001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-areas-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-areas-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-areas-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#grid-template-areas-property&quot; title=&quot;5.2 Named Areas: the 'grid-template-areas' property&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-areas' is supported in a grid. So you can define the grid structure.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             #grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportgridtemplatecolumnsrows001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-columns-rows-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-columns-rows-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-grid-template-columns-rows-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#track-sizing&quot; title=&quot;5.1 Track Sizing: the 'grid-template-rows' and 'grid-template-columns' properties&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-columns' and 'grid-template-rows' properties are supported in a grid. So you can use the different syntax options to define the trak list.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportnamedgridlines001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-named-grid-lines-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-named-grid-lines-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-named-grid-lines-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#named-lines&quot; title=&quot;5.1.1. Named Grid Lines: the '(&amp;lt;custom-ident\&amp;gt;*)' syntax&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that grid lines can be explicitly named in 'grid-template-columns' and 'grid-template-rows' properties.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridsupportrepeat001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-repeat-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-repeat-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-support-repeat-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#repeat-notation&quot; title=&quot;5.1.2 Repeating Rows and Columns: the 'repeat()' notation&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid-template-columns' and 'grid-template-rows' properties support 'repeat()' notation, so you can use it to represents a repeated fragment of the track list.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griddefinitiongridtemplatecolumnsrowsresolvedvalues001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-definition/grid-template-columns-rows-resolved-values-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#resolved-track-list&quot; title=&quot;5.1.5. Resolved Values&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;ahem dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that resolved values for 'grid-template-columns' and 'grid-template-rows' list tracks implicitly created.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;script src=&quot;support/testing-utils.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</span><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .grid {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1griditemsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,13 +15,9 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-inline-blocks-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-items-inline-blocks-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-auto-placement-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-auto-placement-001.xht
</span><span class="lines">@@ -33,25 +29,15 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-auto-placement-004.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-auto-placement-005-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-auto-placement-005.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-004-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-004.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-005-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-order-property-painting-005.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-004-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-004.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-005-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-005.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-overlapped-items-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-overlapped-items-001.xht
</span><span class="lines">@@ -65,21 +51,13 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-overlapped-items-005.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-overlapped-items-006-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-inline-z-axis-ordering-overlapped-items-006.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-001.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-002.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-003.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-004-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-item-containing-block-004.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-inline-blocks-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-inline-blocks-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-sizing-alignment-001-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-items-sizing-alignment-001.html
</span><span class="lines">@@ -89,13 +67,9 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-layout-z-order-a.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-layout-z-order-b-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-layout-z-order-b.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-004-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-004.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-005-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-005.xht
</span><span class="lines">@@ -107,27 +81,16 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-008.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-009.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-010-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-010.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-011-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-011.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-012-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-012.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-013-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-013.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-014-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-014.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-015-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-015.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-016-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-016.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-017-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-017.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-018-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-018.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-019-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-019.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-020-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-minimum-size-grid-items-020.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-auto-placement-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-auto-placement-001.xht
</span><span class="lines">@@ -139,25 +102,15 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-auto-placement-004.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-auto-placement-005-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-auto-placement-005.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-004-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-004.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-005-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-order-property-painting-005.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-002-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-002.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-003-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-004-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-004.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-005-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-005.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-overlapped-items-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-items/grid-z-axis-ordering-overlapped-items-001.xht
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1gridmodelgridcomputedvaluedisplayfloateditems001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,8 +6,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#grid-containers&quot; title=&quot;3.1 Establishing Grid Containers&quot; /&gt;
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/CSS2/visuren.html#dis-pos-flo&quot; title=&quot;9.7 Relationships between 'display', 'position', and 'float'&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;dom&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             #grid {
</span><span class="cx">                 display: grid;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1gridmodelgridsupportdisplay001xht"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -7,8 +7,8 @@
</span><span class="cx">         &lt;link rel=&quot;help&quot; href=&quot;http://www.w3.org/TR/css-grid-1/#grid-containers&quot; title=&quot;3.1 Establishing Grid Containers&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;flags&quot; content=&quot;dom&quot; /&gt;
</span><span class="cx">         &lt;meta name=&quot;assert&quot; content=&quot;This test checks that 'grid' and 'inline-grid' values for 'display' property are supported so that DOM methods, specifically getComputedValue(), and its associated CSS2Properties interface, can fetch such 'display' values.&quot; /&gt;
</span><del>-        &lt;script src=&quot;../../../../../../resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-        &lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</del><ins>+        &lt;script src=&quot;/resources/testharness.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+        &lt;script src=&quot;/resources/testharnessreport.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</ins><span class="cx">         &lt;style type=&quot;text/css&quot;&gt;&lt;![CDATA[
</span><span class="cx">             .grid {
</span><span class="cx">                 display: grid;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsscssgrid1gridmodelw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -20,9 +20,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/display-inline-grid-expected.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/display-inline-grid.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-computed-value-display-floated-items-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-display-grid-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-display-grid-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-display-inline-grid-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-display-inline-grid-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-first-letter-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-first-letter-001.xht
</span><span class="lines">@@ -36,9 +34,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-first-line-002.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-first-line-003-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-first-line-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-float-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-float-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-floats-no-intrude-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-floats-no-intrude-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-first-letter-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-first-letter-001.xht
</span><span class="lines">@@ -52,20 +48,14 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-first-line-002.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-first-line-003-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-first-line-003.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-float-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-float-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-floats-no-intrude-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-floats-no-intrude-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-margins-no-collapse-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-margins-no-collapse-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-multicol-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-multicol-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-vertical-align-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-inline-vertical-align-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-margins-no-collapse-001-expected.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-margins-no-collapse-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-multicol-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-multicol-001.xht
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-support-display-001.xht
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-vertical-align-001-expected.xht
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/css/css-grid-1/grid-model/grid-vertical-align-001.xht
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscssrequirementstxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/requirements.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/requirements.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/requirements.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+six==1.10.0
+Template-Python==0.1.post1
+html5lib==0.9999999
+lxml==3.7.3
+mercurial==4.1
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscssw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</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/css/.htaccess
+/LayoutTests/imported/w3c/web-platform-tests/css/OWNERS
+/LayoutTests/imported/w3c/web-platform-tests/css/README.md
+/LayoutTests/imported/w3c/web-platform-tests/css/build-css-testsuites.sh
+/LayoutTests/imported/w3c/web-platform-tests/css/requirements.txt
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1OWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/OWNERS (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+@birtles
+@BorisChiou
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1cubicbeziertimingfunctionsoutputexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL cubic-bezier easing with input progress greater than 1 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL cubic-bezier easing with input progress greater than 1 and where the tangent on the upper boundary is infinity target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL cubic-bezier easing with input progress less than 0 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL cubic-bezier easing with input progress less than 0 and where the tangent on the lower boundary is infinity target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1cubicbeziertimingfunctionsoutputhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,221 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;meta name=&quot;assert&quot;
+content=&quot;This test checks the output of Cubic Bézier functions&quot; /&gt;
+&lt;title&gt;Tests for the output of Cubic Bézier timing functions&lt;/title&gt;
+&lt;link rel=&quot;help&quot;
+href=&quot;https://drafts.csswg.org/css-timing/#cubic-bezier-timing-functions&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;testcommon.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+'use strict';
+
+function assert_style_left_at(animation, time, easingFunction) {
+  animation.currentTime = time;
+  var portion = time / animation.effect.timing.duration;
+  assert_approx_equals(pxToNum(getComputedStyle(animation.effect.target).left),
+                       easingFunction(portion) * 100,
+                       0.01,
+                       'The left of the animation should be approximately ' +
+                       easingFunction(portion) * 100 + ' at ' + time + 'ms');
+}
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate(
+    // http://cubic-bezier.com/#.5,1,.5,0
+    [ { left: '0px', easing: 'cubic-bezier(0.5, 1, 0.5, 0)' },
+      { left: '100px' } ],
+      { duration: 1000,
+        fill: 'forwards',
+        easing: 'cubic-bezier(0, 1.5, 1, 1.5)' });
+  var keyframeEasing = function(x) {
+    assert_greater_than_equal(x, 0.0,
+      'This function should be called in [0, 1.0] range');
+    assert_less_than_equal(x, 1.0,
+      'This function should be called in [0, 1.0] range');
+    return cubicBezier(0.5, 1, 0.5, 0)(x);
+  }
+  var keyframeEasingExtrapolated = function(x) {
+    assert_greater_than(x, 1.0,
+      'This function should be called in (1.0, infinity) range');
+    // p3x + (p2y - p3y) / (p2x - p3x) * (x - p3x)
+    return 1.0 + (0 - 1) / (0.5 - 1) * (x - 1.0);
+  }
+  var effectEasing = function(x) {
+    return cubicBezier(0, 1.5, 1, 1.5)(x);
+  }
+
+  // The effect-easing produces values greater than 1 in (0.23368794, 1)
+  assert_style_left_at(anim, 0, function(x) {
+    return keyframeEasing(effectEasing(x));
+  });
+  assert_style_left_at(anim, 230, function(x) {
+    return keyframeEasing(effectEasing(x));
+  });
+  assert_style_left_at(anim, 240, function(x) {
+    return keyframeEasingExtrapolated(effectEasing(x));
+  });
+  // Near the extreme point of the effect-easing function
+  assert_style_left_at(anim, 700, function(x) {
+    return keyframeEasingExtrapolated(effectEasing(x));
+  });
+  assert_style_left_at(anim, 990, function(x) {
+    return keyframeEasingExtrapolated(effectEasing(x));
+  });
+  assert_style_left_at(anim, 1000, function(x) {
+    return keyframeEasing(effectEasing(x));
+  });
+}, 'cubic-bezier easing with input progress greater than 1');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate(
+    // http://cubic-bezier.com/#0,1.5,1,1.5
+    [ { left: '0px', easing: 'cubic-bezier(0, 1.5, 1, 1.5)' },
+      { left: '100px' } ],
+      { duration: 1000,
+        fill: 'forwards',
+        easing: 'cubic-bezier(0, 1.5, 1, 1.5)' });
+  var easing = function(x) {
+    assert_greater_than_equal(x, 0.0,
+      'This function should be called in [0, 1.0] range');
+    assert_less_than_equal(x, 1.0,
+      'This function should be called in [0, 1.0] range');
+    return cubicBezier(0, 1.5, 1, 1.5)(x);
+  }
+  var easingExtrapolated = function(x) {
+    assert_greater_than(x, 1.0,
+      'This function should be called in negative range');
+    // For cubic-bezier(0, 1.5, 1, 1.5), the tangent at the
+    // endpoint (x = 1.0) is infinity so we should just return 1.0.
+    return 1.0;
+  }
+
+  // The effect-easing produces values greater than 1 in (0.23368794, 1)
+  assert_style_left_at(anim, 0, function(x) {
+    return easing(easing(x))
+  });
+  assert_style_left_at(anim, 230, function(x) {
+    return easing(easing(x))
+  });
+  assert_style_left_at(anim, 240, function(x) {
+    return easingExtrapolated(easing(x));
+  });
+  // Near the extreme point of the effect-easing function
+  assert_style_left_at(anim, 700, function(x) {
+    return easingExtrapolated(easing(x));
+  });
+  assert_style_left_at(anim, 990, function(x) {
+    return easingExtrapolated(easing(x));
+  });
+  assert_style_left_at(anim, 1000, function(x) {
+    return easing(easing(x))
+  });
+}, 'cubic-bezier easing with input progress greater than 1 and where the ' +
+   'tangent on the upper boundary is infinity');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate(
+    // http://cubic-bezier.com/#.5,1,.5,0
+    [ { left: '0px', easing: 'cubic-bezier(0.5, 1, 0.5, 0)' },
+      { left: '100px' } ],
+      { duration: 1000,
+        fill: 'forwards',
+        easing: 'cubic-bezier(0, -0.5, 1, -0.5)' });
+  var keyframeEasing = function(x) {
+    assert_greater_than_equal(x, 0.0,
+      'This function should be called in [0, 1.0] range');
+    assert_less_than_equal(x, 1.0,
+      'This function should be called in [0, 1.0] range');
+    return cubicBezier(0.5, 1, 0.5, 0)(x);
+  }
+  var keyframeEasingExtrapolated = function(x) {
+    assert_less_than(x, 0.0,
+      'This function should be called in negative range');
+    // p0x + (p1y - p0y) / (p1x - p0x) * (x - p0x)
+    return (1 / 0.5) * x;
+  }
+  var effectEasing = function(x) {
+    return cubicBezier(0, -0.5, 1, -0.5)(x);
+  }
+
+  // The effect-easing produces negative values in (0, 0.766312060)
+  assert_style_left_at(anim, 0, function(x) {
+    return keyframeEasing(effectEasing(x));
+  });
+  assert_style_left_at(anim, 10, function(x) {
+    return keyframeEasingExtrapolated(effectEasing(x));
+  });
+  // Near the extreme point of the effect-easing function
+  assert_style_left_at(anim, 300, function(x) {
+    return keyframeEasingExtrapolated(effectEasing(x));
+  });
+  assert_style_left_at(anim, 750, function(x) {
+    return keyframeEasingExtrapolated(effectEasing(x));
+  });
+  assert_style_left_at(anim, 770, function(x) {
+    return keyframeEasing(effectEasing(x));
+  });
+  assert_style_left_at(anim, 1000, function(x) {
+    return keyframeEasing(effectEasing(x));
+  });
+}, 'cubic-bezier easing with input progress less than 0');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate(
+    // http://cubic-bezier.com/#0,-0.5,1,-0.5
+    [ { left: '0px', easing: 'cubic-bezier(0, -0.5, 1, -0.5)' },
+      { left: '100px' } ],
+      { duration: 1000,
+        fill: 'forwards',
+        easing: 'cubic-bezier(0, -0.5, 1, -0.5)' });
+  var easing = function(x) {
+    assert_greater_than_equal(x, 0.0,
+      'This function should be called in [0, 1.0] range');
+    assert_less_than_equal(x, 1.0,
+      'This function should be called in [0, 1.0] range');
+    return cubicBezier(0, -0.5, 1, -0.5)(x);
+  }
+  var easingExtrapolated = function(x) {
+    assert_less_than(x, 0.0,
+      'This function should be called in negative range');
+    // For cubic-bezier(0, -0.5, 1, -0.5), the tangent at the
+    // endpoint (x = 0.0) is infinity so we should just return 0.0.
+    return 0.0;
+  }
+
+  // The effect-easing produces negative values in (0, 0.766312060)
+  assert_style_left_at(anim, 0, function(x) {
+    return easing(easing(x))
+  });
+  assert_style_left_at(anim, 10, function(x) {
+    return easingExtrapolated(easing(x));
+  });
+  // Near the extreme point of the effect-easing function
+  assert_style_left_at(anim, 300, function(x) {
+    return easingExtrapolated(easing(x));
+  });
+  assert_style_left_at(anim, 750, function(x) {
+    return easingExtrapolated(easing(x));
+  });
+  assert_style_left_at(anim, 770, function(x) {
+    return easing(easing(x))
+  });
+  assert_style_left_at(anim, 1000, function(x) {
+    return easing(easing(x))
+  });
+}, 'cubic-bezier easing with input progress less than 0 and where the ' +
+   'tangent on the lower boundary is infinity');
+
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionsoutputexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+
+FAIL For an input progress of 0.0, the output of a frames timing function is the first frame assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL At a frame boundary, the output of a frames timing function is the next frame assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL For an input progress of 1.0, the output of a frames timing function is the final frame assert_equals: expected &quot;100px&quot; but got &quot;auto&quot;
+FAIL The number of frames is correctly reflected in the frames timing function output assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL The number of frames is correctly reflected in the frames timing function output on CSS Transitions assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL frames easing with input progress greater than 1 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL frames easing with input progress greater than 1.5 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL frames easing with input progress less than 0 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionsoutputhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,152 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;meta name=&quot;assert&quot;
+content=&quot;This test checks the output of frame timing functions with different frame numbers&quot; /&gt;
+&lt;title&gt;Frames timing function output tests&lt;/title&gt;
+&lt;link rel=&quot;help&quot;
+href=&quot;https://drafts.csswg.org/css-timing/#frames-timing-functions&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;testcommon.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;
+@keyframes anim {
+  from { left: 0px; }
+  to   { left: 100px; }
+}
+&lt;/style&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.animation = 'anim 10s frames(2) forwards';
+  assert_equals(getComputedStyle(div).left, '0px');
+}, 'For an input progress of 0.0, the output of a frames timing function is ' +
+   'the first frame');
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.animation = 'anim 10s frames(2) forwards';
+
+  div.style.animationDelay = '-4999ms';
+  assert_equals(getComputedStyle(div).left, '0px');
+  div.style.animationDelay = '-5000ms';
+  assert_equals(getComputedStyle(div).left, '100px');
+}, 'At a frame boundary, the output of a frames timing function is the next ' +
+   'frame');
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.animation = 'anim 10s frames(2) forwards';
+
+  div.style.animationDelay = '-10s';
+  assert_equals(getComputedStyle(div).left, '100px');
+}, 'For an input progress of 1.0, the output of a frames timing function is ' +
+   'the final frame');
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.animation = 'anim 11s frames(11) forwards';
+
+  // We have 11 frames in 11s, so the first step happens at 1.0.
+  div.style.animationDelay = '-999ms';
+  assert_equals(getComputedStyle(div).left, '0px');
+  div.style.animationDelay = '-1000ms';
+  assert_equals(getComputedStyle(div).left, '10px');
+}, 'The number of frames is correctly reflected in the frames timing ' +
+   'function output');
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.transition = 'left 11s frames(11)';
+
+  // We have 11 frames in 11s, so the first step happens at 1.0.
+  div.style.left = '0px';
+  div.style.transitionDelay = '-999ms';
+  getComputedStyle(div).left;
+  div.style.left = '100px';
+  assert_equals(getComputedStyle(div).left, '0px');
+
+  div.style.left = '0px';
+  div.style.transitionDelay = '-1000ms';
+  getComputedStyle(div).left;
+  div.style.left = '100px';
+  assert_equals(getComputedStyle(div).left, '10px');
+}, 'The number of frames is correctly reflected in the frames timing ' +
+   'function output on CSS Transitions');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'frames(2)' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, 1.5, 1, 1.5)' });
+
+  // The bezier function produces values between 0.5 and 1 in
+  // (~0.0442, 0.23368), and values between 1 and 2 in (0.23368794, 1).
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 45;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 230;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 250;
+  assert_equals(getComputedStyle(target).left, '200px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'frames easing with input progress greater than 1');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'frames(2)' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, 3, 1, 3)' });
+
+  // The bezier funciton produces values:
+  // Input           -&gt;  Output
+  // 0.0                 0.0
+  // 0.114 ~ 0.245       1.5~2.0, so frames(2) is 3.0
+  // 0.245 ~ 0.6         2.0~2.4, so frames(2) is 4.0
+  // 0.6   ~ 0.882       2.4~2.0, so frames(2) is 4.0
+  // 0.882 ~ 0.976       2.0~1.5, so frames(2) is 3.0
+  // 1.0                 1.0
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 114;
+  assert_equals(getComputedStyle(target).left, '300px');
+  anim.currentTime = 500;
+  assert_equals(getComputedStyle(target).left, '400px');
+  anim.currentTime = 900;
+  assert_equals(getComputedStyle(target).left, '300px');
+}, 'frames easing with input progress greater than 1.5');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'frames(2)' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, -0.5, 1, -0.5)' });
+
+  // The bezier function produces negative values (but always greater than -0.5)
+  // in (0, 0.766312060).
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 750;
+  assert_equals(getComputedStyle(target).left, '-100px');
+  anim.currentTime = 800;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'frames easing with input progress less than 0');
+
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionssyntaxexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS The number of frames must be a positive integer greater than 1, or we fallback to the previously-set easing 
+FAIL The serialization of frames is 'frames(n)', n is the number of frames assert_equals: expected &quot;frames(2)&quot; but got &quot;ease&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1framestimingfunctionssyntaxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;meta name=&quot;assert&quot;
+content=&quot;This test checks the syntax output of frame timing functions&quot; /&gt;
+&lt;title&gt;Frames timing function syntax tests&lt;/title&gt;
+&lt;link rel=&quot;help&quot;
+href=&quot;https://drafts.csswg.org/css-timing/#frames-timing-functions&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;testcommon.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.animation = 'abc 1s ease-in';
+  div.style.animationTimingFunction = 'frames(1)';
+  assert_equals(getComputedStyle(div).animationTimingFunction, 'ease-in');
+}, 'The number of frames must be a positive integer greater than 1, or we ' +
+   'fallback to the previously-set easing');
+
+test(function(t) {
+  const div = createDiv(t);
+  div.style.animation = 'abc 1s frames(  2 )';
+  assert_equals(getComputedStyle(div).animationTimingFunction, 'frames(2)');
+}, 'The serialization of frames is \'frames(n)\', n is the number of frames');
+
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1steptimingfunctionsoutputexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+FAIL step-start easing with input progress greater than 1 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL step-end easing with input progress greater than 1 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL step-end easing with input progress greater than 2 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL step-start easing with input progress less than 0 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL step-start easing with input progress less than -1 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+FAIL step-end easing with input progress less than 0 target.animate is not a function. (In 'target.animate', 'target.animate' is undefined)
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1steptimingfunctionsoutputhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,141 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;meta name=&quot;assert&quot;
+content=&quot;This test checks the output of step timing functions&quot; /&gt;
+&lt;title&gt;Tests for the output of step timing functions&lt;/title&gt;
+&lt;link rel=&quot;help&quot;
+href=&quot;https://drafts.csswg.org/css-timing/#step-timing-functions&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;testcommon.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+'use strict';
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'step-start' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, 1.5, 1, 1.5)' });
+
+  // The bezier function produces values greater than 1 (but always less than 2)
+  // in (0.23368794, 1)
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 230;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 250;
+  assert_equals(getComputedStyle(target).left, '200px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'step-start easing with input progress greater than 1');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'step-end' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, 1.5, 1, 1.5)' });
+
+  // The bezier function produces values greater than 1 (but always less than 2)
+  // in (0.23368794, 1)
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 230;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 250;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'step-end easing with input progress greater than 1');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'step-end' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, 3, 1, 3)' });
+
+  // The bezier function produces values greater than 2 (but always less than 3)
+  // in the range (~0.245, ~0.882)
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 500;
+  assert_equals(getComputedStyle(target).left, '200px');
+  anim.currentTime = 900;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'step-end easing with input progress greater than 2');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'step-start' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, -0.5, 1, -0.5)' });
+
+  // The bezier function produces negative values (but always greater than -1)
+  // in (0, 0.766312060)
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 750;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 800;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'step-start easing with input progress less than 0');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'step-start' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, -2, 1, -2)' });
+
+  // The bezier function produces values less than -1 (but always greater than
+  // -2) in the range (~0.118, ~0.755)
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '100px');
+  anim.currentTime = 100;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 500;
+  assert_equals(getComputedStyle(target).left, '-100px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'step-start easing with input progress less than -1');
+
+test(function(t) {
+  var target = createDiv(t);
+  target.style.position = 'absolute';
+  var anim = target.animate([ { left: '0px', easing: 'step-end' },
+                              { left: '100px' } ],
+                            { duration: 1000,
+                              fill: 'forwards',
+                              easing: 'cubic-bezier(0, -0.5, 1, -0.5)' });
+
+  // The bezier function produces negative values (but always greater than -1)
+  // in (0, 0.766312060)
+  anim.currentTime = 0;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 750;
+  assert_equals(getComputedStyle(target).left, '-100px');
+  anim.currentTime = 800;
+  assert_equals(getComputedStyle(target).left, '0px');
+  anim.currentTime = 1000;
+  assert_equals(getComputedStyle(target).left, '100px');
+}, 'step-end easing with input progress less than 0');
+
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1testcommonjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/testcommon.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/testcommon.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/testcommon.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+'use strict';
+
+// Creates a &lt;div&gt; element, appends it to the document body and
+// removes the created element during test cleanup.
+function createDiv(test, doc) {
+  return createElement(test, 'div', doc);
+}
+
+// Creates an element with the given |tagName|, appends it to the document body
+// and removes the created element during test cleanup.
+// If |tagName| is null or undefined, creates a &lt;div&gt; element.
+function createElement(test, tagName, doc) {
+  if (!doc) {
+    doc = document;
+  }
+  var element = doc.createElement(tagName || 'div');
+  doc.body.appendChild(element);
+  test.add_cleanup(function() {
+    element.remove();
+  });
+  return element;
+}
+
+// Convert px unit value to a Number
+function pxToNum(str) {
+  return Number(String(str).match(/^(-?[\d.]+)px$/)[1]);
+}
+
+// Cubic bezier with control points (0, 0), (x1, y1), (x2, y2), and (1, 1).
+function cubicBezier(x1, y1, x2, y2) {
+  function xForT(t) {
+    var omt = 1-t;
+    return 3 * omt * omt * t * x1 + 3 * omt * t * t * x2 + t * t * t;
+  }
+
+  function yForT(t) {
+    var omt = 1-t;
+    return 3 * omt * omt * t * y1 + 3 * omt * t * t * y2 + t * t * t;
+  }
+
+  function tForX(x) {
+    // Binary subdivision.
+    var mint = 0, maxt = 1;
+    for (var i = 0; i &lt; 30; ++i) {
+      var guesst = (mint + maxt) / 2;
+      var guessx = xForT(guesst);
+      if (x &lt; guessx) {
+        maxt = guesst;
+      } else {
+        mint = guesst;
+      }
+    }
+    return (mint + maxt) / 2;
+  }
+
+  return function bezierClosure(x) {
+    if (x == 0) {
+      return 0;
+    }
+    if (x == 1) {
+      return 1;
+    }
+    return yForT(tForX(x));
+  }
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestscsstiming1w3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,23 @@
</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/css-timing-1/OWNERS
+/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output.html
+/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-output.html
+/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/frames-timing-functions-syntax.html
+/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/step-timing-functions-output.html
+/LayoutTests/imported/w3c/web-platform-tests/css-timing-1/testcommon.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MouseEvents). 
</span><span class="cx"> FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (PageTransitionEvent). The operation is not supported.
</span><span class="cx"> PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (PopStateEvent). 
</span><del>-FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (ProgressEvent). The operation is not supported.
</del><span class="cx"> PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (StorageEvent). 
</span><span class="cx"> FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (SVGEvents). The operation is not supported.
</span><span class="cx"> PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (TextEvent). 
</span></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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,8 @@
</span><span class="cx"> 
</span><del>-PASS DOMTokenList iteration: keys, values, etc. 
</del><ins>+PASS classList 
+PASS classList.keys 
+PASS classList.values 
+PASS classList.entries 
+PASS classList.forEach 
+PASS classList inheritance from Array.prototype 
</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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -5,46 +5,67 @@
</span><span class="cx"> &lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
</span><span class="cx"> &lt;span class=&quot;   a  a b &quot;&gt;&lt;/span&gt;
</span><span class="cx"> &lt;script&gt;
</span><del>-  test(function() {
</del><ins>+  test(() =&gt; {
</ins><span class="cx">     var list = document.querySelector(&quot;span&quot;).classList;
</span><span class="cx">     assert_array_equals([...list], [&quot;a&quot;, &quot;b&quot;]);
</span><ins>+  }, &quot;classList&quot;);
</ins><span class="cx"> 
</span><del>-    var keys = list.keys();
-    assert_false(keys instanceof Array);
</del><ins>+  test(() =&gt; {
+    var keys = document.querySelector(&quot;span&quot;).classList.keys();
+    assert_false(keys instanceof Array, &quot;must not be Array&quot;);
</ins><span class="cx">     keys = [...keys];
</span><span class="cx">     assert_array_equals(keys, [0, 1]);
</span><ins>+  }, &quot;classList.keys&quot;);
</ins><span class="cx"> 
</span><del>-    var values = list.values();
-    assert_false(values instanceof Array);
</del><ins>+  test(() =&gt; {
+    var values = document.querySelector(&quot;span&quot;).classList.values();
+    assert_false(values instanceof Array, &quot;must not be Array&quot;);
</ins><span class="cx">     values = [...values];
</span><span class="cx">     assert_array_equals(values, [&quot;a&quot;, &quot;b&quot;]);
</span><ins>+  }, &quot;classList.values&quot;);
</ins><span class="cx"> 
</span><del>-    var entries = list.entries();
-    assert_false(entries instanceof Array);
</del><ins>+  test(() =&gt; {
+    var entries = document.querySelector(&quot;span&quot;).classList.entries();
+    assert_false(entries instanceof Array, &quot;must not be Array&quot;);
</ins><span class="cx">     entries = [...entries];
</span><del>-    assert_equals(entries.length, keys.length);
-    assert_equals(entries.length, values.length);
</del><ins>+    var keys = [...document.querySelector(&quot;span&quot;).classList.keys()];
+    var values = [...document.querySelector(&quot;span&quot;).classList.values()];
+    assert_equals(entries.length, keys.length, &quot;entries.length == keys.length&quot;);
+    assert_equals(entries.length, values.length,
+                  &quot;entries.length == values.length&quot;);
</ins><span class="cx">     for (var i = 0; i &lt; entries.length; ++i) {
</span><del>-      assert_array_equals(entries[i], [keys[i], values[i]]);
</del><ins>+      assert_array_equals(entries[i], [keys[i], values[i]],
+                          &quot;entries[&quot; + i + &quot;]&quot;);
</ins><span class="cx">     }
</span><ins>+  }, &quot;classList.entries&quot;);
</ins><span class="cx"> 
</span><ins>+  test(() =&gt; {
+    var list = document.querySelector(&quot;span&quot;).classList;
+    var values = [...list.values()];
+    var keys = [...list.keys()];
+    var entries = [...list.entries()];
+
</ins><span class="cx">     var cur = 0;
</span><span class="cx">     var thisObj = {};
</span><span class="cx">     list.forEach(function(value, key, listObj) {
</span><del>-      assert_equals(listObj, list);
-      assert_equals(this, thisObj);
-      assert_equals(value, values[cur]);
-      assert_equals(key, keys[cur]);
</del><ins>+      assert_equals(listObj, list, &quot;Entry &quot; + cur + &quot; listObj&quot;);
+      assert_equals(this, thisObj, &quot;Entry &quot; + cur + &quot; this&quot;);
+      assert_equals(value, values[cur], &quot;Entry &quot; + cur + &quot; value&quot;);
+      assert_equals(key, keys[cur], &quot;Entry &quot; + cur + &quot; key&quot;);
</ins><span class="cx">       cur++;
</span><span class="cx">     }, thisObj);
</span><del>-    assert_equals(cur, entries.length);
</del><ins>+    assert_equals(cur, entries.length, &quot;length&quot;);
+  }, &quot;classList.forEach&quot;);
</ins><span class="cx"> 
</span><del>-    assert_equals(list[Symbol.iterator], Array.prototype[Symbol.iterator]);
-    assert_equals(list.keys, Array.prototype.keys);
</del><ins>+  test(() =&gt; {
+    var list = document.querySelector(&quot;span&quot;).classList;
+    assert_equals(list[Symbol.iterator], Array.prototype[Symbol.iterator],
+                  &quot;[Symbol.iterator]&quot;);
+    assert_equals(list.keys, Array.prototype.keys, &quot;.keys&quot;);
</ins><span class="cx">     if (Array.prototype.values) {
</span><del>-      assert_equals(list.values, Array.prototype.values);
</del><ins>+      assert_equals(list.values, Array.prototype.values, &quot;.values&quot;);
</ins><span class="cx">     }
</span><del>-    assert_equals(list.entries, Array.prototype.entries);
-    assert_equals(list.forEach, Array.prototype.forEach);
-  });
</del><ins>+    assert_equals(list.entries, Array.prototype.entries, &quot;.entries&quot;);
+    assert_equals(list.forEach, Array.prototype.forEach, &quot;.forEach&quot;);
+  }, &quot;classList inheritance from Array.prototype&quot;);
</ins><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomlistsREADMEmd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/README.md (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/README.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/README.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+See `../nodes/Element-classlist.html` for more DOMTokenList tests.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomlistsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -20,3 +20,4 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-iteration.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-value.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/dom/lists/README.md
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -143,13 +143,6 @@
</span><span class="cx"> PASS POPSTATEEVENT should be an alias for PopStateEvent. 
</span><span class="cx"> PASS createEvent('POPSTATEEVENT') should be initialized correctly. 
</span><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for pluralized legacy event interface &quot;PopStateEvents&quot; 
</span><del>-FAIL ProgressEvent should be an alias for ProgressEvent. The operation is not supported.
-FAIL createEvent('ProgressEvent') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
-FAIL progressevent should be an alias for ProgressEvent. The operation is not supported.
-FAIL createEvent('progressevent') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
-FAIL PROGRESSEVENT should be an alias for ProgressEvent. The operation is not supported.
-FAIL createEvent('PROGRESSEVENT') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
-PASS Should throw NOT_SUPPORTED_ERR for pluralized legacy event interface &quot;ProgressEvents&quot; 
</del><span class="cx"> PASS StorageEvent should be an alias for StorageEvent. 
</span><span class="cx"> PASS createEvent('StorageEvent') should be initialized correctly. 
</span><span class="cx"> PASS storageevent should be an alias for StorageEvent. 
</span><span class="lines">@@ -298,6 +291,8 @@
</span><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for pluralized non-legacy event interface &quot;PresentationConnectionAvailableEvents&quot; 
</span><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for non-legacy event interface &quot;PresentationConnectionCloseEvent&quot; 
</span><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for pluralized non-legacy event interface &quot;PresentationConnectionCloseEvents&quot; 
</span><ins>+PASS Should throw NOT_SUPPORTED_ERR for non-legacy event interface &quot;ProgressEvent&quot; 
+PASS Should throw NOT_SUPPORTED_ERR for pluralized non-legacy event interface &quot;ProgressEvents&quot; 
</ins><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for non-legacy event interface &quot;PromiseRejectionEvent&quot; 
</span><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for pluralized non-legacy event interface &quot;PromiseRejectionEvents&quot; 
</span><span class="cx"> PASS Should throw NOT_SUPPORTED_ERR for non-legacy event interface &quot;PushEvent&quot; 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -109,6 +109,7 @@
</span><span class="cx">   &quot;PopUpEvent&quot;,
</span><span class="cx">   &quot;PresentationConnectionAvailableEvent&quot;,
</span><span class="cx">   &quot;PresentationConnectionCloseEvent&quot;,
</span><ins>+  &quot;ProgressEvent&quot;,
</ins><span class="cx">   &quot;PromiseRejectionEvent&quot;,
</span><span class="cx">   &quot;PushEvent&quot;,
</span><span class="cx">   &quot;RTCDTMFToneChangeEvent&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -20,7 +20,6 @@
</span><span class="cx">   &quot;MouseEvents&quot;: &quot;MouseEvent&quot;,
</span><span class="cx">   &quot;PageTransitionEvent&quot;: &quot;PageTransitionEvent&quot;,
</span><span class="cx">   &quot;PopStateEvent&quot;: &quot;PopStateEvent&quot;,
</span><del>-  &quot;ProgressEvent&quot;: &quot;ProgressEvent&quot;,
</del><span class="cx">   &quot;StorageEvent&quot;: &quot;StorageEvent&quot;,
</span><span class="cx">   &quot;SVGEvents&quot;: &quot;Event&quot;,
</span><span class="cx">   &quot;TextEvent&quot;: &quot;CompositionEvent&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsencryptedmediacontentcontentmetadatajs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/content-metadata.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/content-metadata.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/content-metadata.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -81,29 +81,6 @@
</span><span class="cx">                                         initDataType:   'cenc',
</span><span class="cx">                                         initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQ7nNWTsiokPB472hx+kvhixoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3lJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBUAGwAWgB6ADcAcQBqAEkAOABKAEIANAA3ADIAaAB4ACsAawB2AGgAaQB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAH
 gAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgB4AEQASwBBAFkAMAB2AFoAaABVAFUAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' } ] },
</span><span class="cx"> 
</span><del>-    'mp4-basic-key1' :          {   assetId:    'mp4-multikey-sequential',
-                                    variantId:  'key1',
-                                    initDataType:   'cenc',
-                                    audio: {    type:   'audio/mp4;codecs=&quot;mp4a.40.2&quot;',
-                                                path:   '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' },
-                                    video: {    type:   'video/mp4;codecs=&quot;avc1.4d401e&quot;',
-                                                path:   '/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4' },
-                                    keys: [ {   kid:    [0x8a, 0x0d, 0x85, 0x45, 0x21, 0x05, 0xd4, 0x15, 0x35, 0x8f, 0xea, 0x8f, 0x68, 0xe6, 0xc1, 0x91],
-                                                key:    [0x76, 0x6f, 0xab, 0xc1, 0x68, 0x3f, 0xf8, 0xef, 0x4e, 0x76, 0x00, 0x24, 0xc5, 0x23, 0x8f, 0x10],
-                                                initDataType:   'cenc',
-                                                initData: 'AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQig2FRSEF1BU1j+qPaObBkRoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2liWEEwTFcxMWJIUnBhMlY1TFhObGNYVmxiblJwWVd3aUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreEluMD0yB2RlZmF1bHQAAANYcHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAADODgDAAABAAEALgM8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AFIAWQBVAE4AaQBnAFUAaABGAGQAUQAxAGoAKwBxAFAAYQBPAGIAQgBrAFEAPQA9ADwALwBLAEkARAA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC
 0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwATABVAEkAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAGwAYQB5AHIAZQBhAGQAeQAtAHUAaQAuAGUAeABhAG0AcABsAGUALgBjAG8AbQA8AC8ATABVAEkAXwBVAFIATAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AcQBOAEkAZQBiAFQAWABzAG8AcgBnAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A' } ]
-                                },
-    'mp4-basic-key2' :          {   assetId:    'mp4-multikey-sequential',
-                                    variantId:  'key2',
-                                    initDataType:   'cenc',
-                                    audio: {    type:   'audio/mp4;codecs=&quot;mp4a.40.2&quot;',
-                                                path:   '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' },
-                                    video: {    type:   'video/mp4;codecs=&quot;avc1.4d401e&quot;',
-                                                path:   '/encrypted-media/content/video_512x288_h264-360k_multikey_key2_dashinit.mp4' },
-                                    keys: [ {   kid:    [0xfb, 0xb4, 0xb7, 0xf3, 0x4a, 0xbd, 0x31, 0x87, 0x34, 0x4b, 0xce, 0xc4, 0x5f, 0x96, 0x68, 0x88],
-                                                key:    [0x26, 0x52, 0xc3, 0x1d, 0xf7, 0x92, 0xd1, 0x7b, 0x08, 0xa6, 0xfa, 0xd3, 0x7c, 0xb6, 0x25, 0x60],
-                                                initDataType:   'cenc',
-                                                initData: 'AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQ+7S380q9MYc0S87EX5ZoiBoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2liWEEwTFcxMWJIUnBhMlY1TFhObGNYVmxiblJwWVd3aUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreUluMD0yB2RlZmF1bHQAAANYcHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAADODgDAAABAAEALgM8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADgANwBlADAAKwA3ADEASwBoAHoARQAwAFMAOAA3AEUAWAA1AFoAbwBpAEEAPQA9ADwALwBLAEkARAA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC
 0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwATABVAEkAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAGwAYQB5AHIAZQBhAGQAeQAtAHUAaQAuAGUAeABhAG0AcABsAGUALgBjAG8AbQA8AC8ATABVAEkAXwBVAFIATAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4ARgB0AGkASQBoADYAUwBKAG0AcABZAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A' } ] },
</del><span class="cx"> 
</span><span class="cx">     'mp4-multikey-sequential' : {   assetId:    'mp4-multikey-sequential',
</span><span class="cx">                                     initDataType:   'cenc',
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsencryptedmediacontentw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -26,5 +26,3 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_clear_dashinit.mp4
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_dashinit.mp4
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4
-/LayoutTests/imported/w3c/web-platform-tests/encrypted-media/content/video_512x288_h264-360k_multikey_key2_dashinit.mp4
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/OWNERS (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/OWNERS        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><span class="cx"> @jdm
</span><span class="cx"> @youennf
</span><span class="cx"> @annevk
</span><ins>+@mnot
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +0,0 @@
</span><del>-
-PASS Request through fetch should have 'accept' header with value '*/*' 
-PASS Request through fetch should have 'accept' header with value 'custom/*' 
-PASS Request through fetch should have a 'accept-language' header 
-PASS Request through fetch should have 'accept-language' header with value 'bzh' 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +0,0 @@
</span><del>-
-PASS Request through fetch should have 'accept' header with value '*/*' 
-PASS Request through fetch should have 'accept' header with value 'custom/*' 
-PASS Request through fetch should have a 'accept-language' header 
-PASS Request through fetch should have 'accept-language' header with value 'bzh' 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: accept header&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#fetching&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;accept-header.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL Request through fetch should have 'accept' header with value '*/*' Can't find variable: RESOURCES_DIR
+FAIL Request through fetch should have 'accept' header with value 'custom/*' Can't find variable: RESOURCES_DIR
+FAIL Request through fetch should have a 'accept-language' header Can't find variable: RESOURCES_DIR
+FAIL Request through fetch should have 'accept-language' header with value 'bzh' Can't find variable: RESOURCES_DIR
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+// META: script=../resources/utils.js
+
+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept&quot;).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_equals(response.headers.get(&quot;x-request-accept&quot;), &quot;*/*&quot;, &quot;Request has accept header with value '*/*'&quot;);
+  });
+}, &quot;Request through fetch should have 'accept' header with value '*/*'&quot;);
+
+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept&quot;, {&quot;headers&quot;: [[&quot;Accept&quot;, &quot;custom/*&quot;]]}).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_equals(response.headers.get(&quot;x-request-accept&quot;), &quot;custom/*&quot;, &quot;Request has accept header with value 'custom/*'&quot;);
+  });
+}, &quot;Request through fetch should have 'accept' header with value 'custom/*'&quot;);
+
+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept-Language&quot;).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_true(response.headers.has(&quot;x-request-accept-language&quot;));
+  });
+}, &quot;Request through fetch should have a 'accept-language' header&quot;);
+
+promise_test(function() {
+  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept-Language&quot;, {&quot;headers&quot;: [[&quot;Accept-Language&quot;, &quot;bzh&quot;]]}).then(function(response) {
+    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
+    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    assert_equals(response.headers.get(&quot;x-request-accept-language&quot;), &quot;bzh&quot;, &quot;Request has accept header with value 'bzh'&quot;);
+  });
+}, &quot;Request through fetch should have 'accept-language' header with value 'bzh'&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: accept header&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#fetching&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;accept-header.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,38 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-promise_test(function() {
-  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept&quot;).then(function(response) {
-    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
-    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
-    assert_equals(response.headers.get(&quot;x-request-accept&quot;), &quot;*/*&quot;, &quot;Request has accept header with value '*/*'&quot;);
-  });
-}, &quot;Request through fetch should have 'accept' header with value '*/*'&quot;);
-
-promise_test(function() {
-  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept&quot;, {&quot;headers&quot;: [[&quot;Accept&quot;, &quot;custom/*&quot;]]}).then(function(response) {
-    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
-    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
-    assert_equals(response.headers.get(&quot;x-request-accept&quot;), &quot;custom/*&quot;, &quot;Request has accept header with value 'custom/*'&quot;);
-  });
-}, &quot;Request through fetch should have 'accept' header with value 'custom/*'&quot;);
-
-promise_test(function() {
-  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept-Language&quot;).then(function(response) {
-    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
-    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
-    assert_true(response.headers.has(&quot;x-request-accept-language&quot;));
-  });
-}, &quot;Request through fetch should have a 'accept-language' header&quot;);
-
-promise_test(function() {
-  return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=Accept-Language&quot;, {&quot;headers&quot;: [[&quot;Accept-Language&quot;, &quot;bzh&quot;]]}).then(function(response) {
-    assert_equals(response.status, 200, &quot;HTTP status is 200&quot;);
-    assert_equals(response.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
-    assert_equals(response.headers.get(&quot;x-request-accept-language&quot;), &quot;bzh&quot;, &quot;Request has accept header with value 'bzh'&quot;);
-  });
-}, &quot;Request through fetch should have 'accept-language' header with value 'bzh'&quot;);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicacceptheaderworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-CONSOLE MESSAGE: line 1: Fetch API cannot load https://localhost:9443/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Unsafe attempt to load URL https://localhost:9443/fetch/api/resources/top.txt?location=https%3A%2F%2Flocalhost%3A9443%2Ffetch%2Fapi%2Fresources%2Ftop.txt&amp;count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin.html. Domains, protocols and ports must match.
-
-CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/resources/top.txt?location=http%3A%2F%2F127.0.0.1%3A8800%2Ffetch%2Fapi%2Fresources%2Ftop.txt&amp;count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin.html. Domains, protocols and ports must match.
-
-
-PASS Fetch ../resources/top.txt with same-origin mode 
-PASS Fetch http://localhost:8800/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch https://localhost:9443/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch http://127.0.0.1:8800/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=../resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=http://localhost:8800/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=https://localhost:9443/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=http://127.0.0.1:8800/fetch/api/resources/top.txt with same-origin mode 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-CONSOLE MESSAGE: Unsafe attempt to load URL https://localhost:9443/fetch/api/resources/top.txt?location=https%3A%2F%2Flocalhost%3A9443%2Ffetch%2Fapi%2Fresources%2Ftop.txt&amp;count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin-worker.html. Domains, protocols and ports must match.
-
-CONSOLE MESSAGE: Unsafe attempt to load URL http://127.0.0.1:8800/fetch/api/resources/top.txt?location=http%3A%2F%2F127.0.0.1%3A8800%2Ffetch%2Fapi%2Fresources%2Ftop.txt&amp;count=1 from frame with URL http://localhost:8800/fetch/api/basic/mode-same-origin-worker.html. Domains, protocols and ports must match.
-
-
-PASS Fetch ../resources/top.txt with same-origin mode 
-PASS Fetch http://localhost:8800/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch https://localhost:9443/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch http://127.0.0.1:8800/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=../resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=http://localhost:8800/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=https://localhost:9443/fetch/api/resources/top.txt with same-origin mode 
-PASS Fetch /fetch/api/basic/../resources/redirect.py?location=http://127.0.0.1:8800/fetch/api/resources/top.txt with same-origin mode 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: same-origin mode&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;mode-same-origin.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 16: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function fetchSameOrigin(url, shouldPass) {
+  promise_test(function(test) {
+    if (shouldPass)
+      return fetch(url , {&quot;mode&quot;: &quot;same-origin&quot;}).then(function(resp) {
+        assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+        assert_equals(resp.type, &quot;basic&quot;, &quot;response type is basic&quot;);
+      });
+    else
+      return promise_rejects(test, new TypeError, fetch(url, {mode: &quot;same-origin&quot;}));
+  }, &quot;Fetch &quot;+ url + &quot; with same-origin mode&quot;);
+}
+
+var host_info = get_host_info();
+
+fetchSameOrigin(RESOURCES_DIR + &quot;top.txt&quot;, true);
+fetchSameOrigin(host_info.HTTP_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, true);
+fetchSameOrigin(host_info.HTTPS_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
+fetchSameOrigin(host_info.HTTP_REMOTE_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
+
+var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py?location=&quot;;
+
+fetchSameOrigin(redirPath + RESOURCES_DIR + &quot;top.txt&quot;, true);
+fetchSameOrigin(redirPath + host_info.HTTP_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, true);
+fetchSameOrigin(redirPath + host_info.HTTPS_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
+fetchSameOrigin(redirPath + host_info.HTTP_REMOTE_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: same-origin mode&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;mode-same-origin.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,34 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;)
-}
-
-function fetchSameOrigin(url, shouldPass) {
-  promise_test(function(test) {
-    if (shouldPass)
-      return fetch(url , {&quot;mode&quot;: &quot;same-origin&quot;}).then(function(resp) {
-        assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
-        assert_equals(resp.type, &quot;basic&quot;, &quot;response type is basic&quot;);
-      });
-    else
-      return promise_rejects(test, new TypeError, fetch(url, {mode: &quot;same-origin&quot;}));
-  }, &quot;Fetch &quot;+ url + &quot; with same-origin mode&quot;);
-}
-
-var host_info = get_host_info();
-
-fetchSameOrigin(RESOURCES_DIR + &quot;top.txt&quot;, true);
-fetchSameOrigin(host_info.HTTP_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, true);
-fetchSameOrigin(host_info.HTTPS_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
-fetchSameOrigin(host_info.HTTP_REMOTE_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
-
-var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py?location=&quot;;
-
-fetchSameOrigin(redirPath + RESOURCES_DIR + &quot;top.txt&quot;, true);
-fetchSameOrigin(redirPath + host_info.HTTP_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, true);
-fetchSameOrigin(redirPath + host_info.HTTPS_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
-fetchSameOrigin(redirPath + host_info.HTTP_REMOTE_ORIGIN + &quot;/fetch/api/resources/top.txt&quot;, false);
-
-done();
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicmodesameoriginworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-
-PASS origin-when-cross-origin policy on a same-origin URL 
-PASS origin-when-cross-origin policy on a cross-origin URL 
-FAIL origin-when-cross-origin policy on a cross-origin URL after same-origin redirection assert_equals: Request's referrer is correct expected (string) &quot;http://localhost:8800/&quot; but got (object) null
-PASS origin-when-cross-origin policy on a same-origin URL after cross-origin redirection 
-PASS Referrer with credentials should be stripped 
-PASS Referrer with fragment ID should be stripped 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-
-PASS origin-when-cross-origin policy on a same-origin URL 
-PASS origin-when-cross-origin policy on a cross-origin URL 
-FAIL origin-when-cross-origin policy on a cross-origin URL after same-origin redirection assert_equals: Request's referrer is correct expected (string) &quot;http://localhost:8800/&quot; but got (object) null
-PASS origin-when-cross-origin policy on a same-origin URL after cross-origin redirection 
-PASS Referrer with credentials should be stripped 
-PASS Referrer with fragment ID should be stripped 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: same-origin mode&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;referrer.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferreranyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 15: ReferenceError: Can't find variable: RESOURCES_DIR
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: RESOURCES_DIR
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferreranyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferreranyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function runTest(url, init, expectedReferrer, title) {
+    promise_test(function(test) {
+        url += (url.indexOf('?') !== -1 ? '&amp;' : '?') + &quot;headers=referer&amp;cors&quot;;
+
+        return fetch(url , init).then(function(resp) {
+            assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+            assert_equals(resp.headers.get(&quot;x-request-referer&quot;), expectedReferrer, &quot;Request's referrer is correct&quot;);
+        });
+    }, title);
+}
+
+var fetchedUrl = RESOURCES_DIR + &quot;inspect-headers.py&quot;;
+var corsFetchedUrl = get_host_info().HTTP_REMOTE_ORIGIN  + dirname(location.pathname) + RESOURCES_DIR + &quot;inspect-headers.py&quot;;
+var redirectUrl = RESOURCES_DIR + &quot;redirect.py?location=&quot; ;
+var corsRedirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py?location=&quot;;
+
+runTest(fetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, location.toString(), &quot;origin-when-cross-origin policy on a same-origin URL&quot;);
+runTest(corsFetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;origin-when-cross-origin policy on a cross-origin URL&quot;);
+runTest(redirectUrl + corsFetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;origin-when-cross-origin policy on a cross-origin URL after same-origin redirection&quot;);
+runTest(corsRedirectUrl + fetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;origin-when-cross-origin policy on a same-origin URL after cross-origin redirection&quot;);
+
+
+var referrerUrlWithCredentials = get_host_info().HTTP_ORIGIN.replace(&quot;http://&quot;, &quot;http://username:password@&quot;);
+runTest(fetchedUrl, {referrer: referrerUrlWithCredentials}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;Referrer with credentials should be stripped&quot;);
+var referrerUrlWithFragmentIdentifier = get_host_info().HTTP_ORIGIN + &quot;#fragmentIdentifier&quot;;
+runTest(fetchedUrl, {referrer: referrerUrlWithFragmentIdentifier}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;Referrer with fragment ID should be stripped&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: same-origin mode&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;referrer.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,35 +0,0 @@
</span><del>-if (this.document === undefined) {
-    importScripts(&quot;/resources/testharness.js&quot;);
-    importScripts(&quot;../resources/utils.js&quot;);
-    importScripts(&quot;/common/get-host-info.sub.js&quot;)
-}
-
-function runTest(url, init, expectedReferrer, title) {
-    promise_test(function(test) {
-        url += (url.indexOf('?') !== -1 ? '&amp;' : '?') + &quot;headers=referer&amp;cors&quot;;
-
-        return fetch(url , init).then(function(resp) {
-            assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
-            assert_equals(resp.headers.get(&quot;x-request-referer&quot;), expectedReferrer, &quot;Request's referrer is correct&quot;);
-        });
-    }, title);
-}
-
-var fetchedUrl = RESOURCES_DIR + &quot;inspect-headers.py&quot;;
-var corsFetchedUrl = get_host_info().HTTP_REMOTE_ORIGIN  + dirname(location.pathname) + RESOURCES_DIR + &quot;inspect-headers.py&quot;;
-var redirectUrl = RESOURCES_DIR + &quot;redirect.py?location=&quot; ;
-var corsRedirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py?location=&quot;;
-
-runTest(fetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, location.toString(), &quot;origin-when-cross-origin policy on a same-origin URL&quot;);
-runTest(corsFetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;origin-when-cross-origin policy on a cross-origin URL&quot;);
-runTest(redirectUrl + corsFetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;origin-when-cross-origin policy on a cross-origin URL after same-origin redirection&quot;);
-runTest(corsRedirectUrl + fetchedUrl, { referrerPolicy: &quot;origin-when-cross-origin&quot;}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;origin-when-cross-origin policy on a same-origin URL after cross-origin redirection&quot;);
-
-
-var referrerUrlWithCredentials = get_host_info().HTTP_ORIGIN.replace(&quot;http://&quot;, &quot;http://username:password@&quot;);
-runTest(fetchedUrl, {referrer: referrerUrlWithCredentials}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;Referrer with credentials should be stripped&quot;);
-var referrerUrlWithFragmentIdentifier = get_host_info().HTTP_ORIGIN + &quot;#fragmentIdentifier&quot;;
-runTest(fetchedUrl, {referrer: referrerUrlWithFragmentIdentifier}, get_host_info().HTTP_ORIGIN + &quot;/&quot;, &quot;Referrer with fragment ID should be stripped&quot;);
-
-done();
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicreferrerworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,26 +0,0 @@
</span><del>-
-PASS Accept-Charset is a forbidden request header 
-PASS Accept-Encoding is a forbidden request header 
-PASS Access-Control-Request-Headers is a forbidden request header 
-PASS Access-Control-Request-Method is a forbidden request header 
-PASS Connection is a forbidden request header 
-PASS Content-Length is a forbidden request header 
-PASS Cookie is a forbidden request header 
-PASS Cookie2 is a forbidden request header 
-PASS Date is a forbidden request header 
-PASS DNT is a forbidden request header 
-PASS Expect is a forbidden request header 
-PASS Host is a forbidden request header 
-PASS Keep-Alive is a forbidden request header 
-PASS Origin is a forbidden request header 
-PASS Referer is a forbidden request header 
-PASS TE is a forbidden request header 
-PASS Trailer is a forbidden request header 
-PASS Transfer-Encoding is a forbidden request header 
-PASS Upgrade is a forbidden request header 
-PASS Via is a forbidden request header 
-PASS Proxy- is a forbidden request header 
-PASS Proxy-Test is a forbidden request header 
-PASS Sec- is a forbidden request header 
-PASS Sec-Test is a forbidden request header 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,26 +0,0 @@
</span><del>-
-PASS Accept-Charset is a forbidden request header 
-PASS Accept-Encoding is a forbidden request header 
-PASS Access-Control-Request-Headers is a forbidden request header 
-PASS Access-Control-Request-Method is a forbidden request header 
-PASS Connection is a forbidden request header 
-PASS Content-Length is a forbidden request header 
-PASS Cookie is a forbidden request header 
-PASS Cookie2 is a forbidden request header 
-PASS Date is a forbidden request header 
-PASS DNT is a forbidden request header 
-PASS Expect is a forbidden request header 
-PASS Host is a forbidden request header 
-PASS Keep-Alive is a forbidden request header 
-PASS Origin is a forbidden request header 
-PASS Referer is a forbidden request header 
-PASS TE is a forbidden request header 
-PASS Trailer is a forbidden request header 
-PASS Transfer-Encoding is a forbidden request header 
-PASS Upgrade is a forbidden request header 
-PASS Via is a forbidden request header 
-PASS Proxy- is a forbidden request header 
-PASS Proxy-Test is a forbidden request header 
-PASS Sec- is a forbidden request header 
-PASS Sec-Test is a forbidden request header 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: forbidden request header management&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#forbidden-header-name&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;request-forbidden-headers.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 4: ReferenceError: Can't find variable: RESOURCES_DIR
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: RESOURCES_DIR
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+// META: script=../resources/utils.js
+
+function requestForbiddenHeaders(desc, forbiddenHeaders) {
+  var url = RESOURCES_DIR + &quot;inspect-headers.py&quot;;
+  var requestInit = {&quot;headers&quot;: forbiddenHeaders}
+  var urlParameters = &quot;?headers=&quot; + Object.keys(forbiddenHeaders).join(&quot;|&quot;);
+
+  promise_test(function(test){
+    return fetch(url + urlParameters, requestInit).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;);
+      for (var header in forbiddenHeaders)
+        assert_not_equals(resp.headers.get(&quot;x-request-&quot; + header), forbiddenHeaders[header], header + &quot; does not have the value we defined&quot;);
+    });
+  }, desc);
+}
+
+requestForbiddenHeaders(&quot;Accept-Charset is a forbidden request header&quot;, {&quot;Accept-Charset&quot;: &quot;utf-8&quot;});
+requestForbiddenHeaders(&quot;Accept-Encoding is a forbidden request header&quot;, {&quot;Accept-Encoding&quot;: &quot;&quot;});
+
+requestForbiddenHeaders(&quot;Access-Control-Request-Headers is a forbidden request header&quot;, {&quot;Access-Control-Request-Headers&quot;: &quot;&quot;});
+requestForbiddenHeaders(&quot;Access-Control-Request-Method is a forbidden request header&quot;, {&quot;Access-Control-Request-Method&quot;: &quot;&quot;});
+requestForbiddenHeaders(&quot;Connection is a forbidden request header&quot;, {&quot;Connection&quot;: &quot;close&quot;});
+requestForbiddenHeaders(&quot;Content-Length is a forbidden request header&quot;, {&quot;Content-Length&quot;: &quot;42&quot;});
+requestForbiddenHeaders(&quot;Cookie is a forbidden request header&quot;, {&quot;Cookie&quot;: &quot;cookie=none&quot;});
+requestForbiddenHeaders(&quot;Cookie2 is a forbidden request header&quot;, {&quot;Cookie2&quot;: &quot;cookie2=none&quot;});
+requestForbiddenHeaders(&quot;Date is a forbidden request header&quot;, {&quot;Date&quot;: &quot;Wed, 04 May 1988 22:22:22 GMT&quot;});
+requestForbiddenHeaders(&quot;DNT is a forbidden request header&quot;, {&quot;DNT&quot;: &quot;4&quot;});
+requestForbiddenHeaders(&quot;Expect is a forbidden request header&quot;, {&quot;Expect&quot;: &quot;100-continue&quot;});
+requestForbiddenHeaders(&quot;Host is a forbidden request header&quot;, {&quot;Host&quot;: &quot;http://wrong-host.com&quot;});
+requestForbiddenHeaders(&quot;Keep-Alive is a forbidden request header&quot;, {&quot;Keep-Alive&quot;: &quot;timeout=15&quot;});
+requestForbiddenHeaders(&quot;Origin is a forbidden request header&quot;, {&quot;Origin&quot;: &quot;http://wrong-origin.com&quot;});
+requestForbiddenHeaders(&quot;Referer is a forbidden request header&quot;, {&quot;Referer&quot;: &quot;http://wrong-referer.com&quot;});
+requestForbiddenHeaders(&quot;TE is a forbidden request header&quot;, {&quot;TE&quot;: &quot;trailers&quot;});
+requestForbiddenHeaders(&quot;Trailer is a forbidden request header&quot;, {&quot;Trailer&quot;: &quot;Accept&quot;});
+requestForbiddenHeaders(&quot;Transfer-Encoding is a forbidden request header&quot;, {&quot;Transfer-Encoding&quot;: &quot;chunked&quot;});
+requestForbiddenHeaders(&quot;Upgrade is a forbidden request header&quot;, {&quot;Upgrade&quot;: &quot;HTTP/2.0&quot;});
+requestForbiddenHeaders(&quot;Via is a forbidden request header&quot;, {&quot;Via&quot;: &quot;1.1 nowhere.com&quot;});
+requestForbiddenHeaders(&quot;Proxy- is a forbidden request header&quot;, {&quot;Proxy-&quot;: &quot;value&quot;});
+requestForbiddenHeaders(&quot;Proxy-Test is a forbidden request header&quot;, {&quot;Proxy-Test&quot;: &quot;value&quot;});
+requestForbiddenHeaders(&quot;Sec- is a forbidden request header&quot;, {&quot;Sec-&quot;: &quot;value&quot;});
+requestForbiddenHeaders(&quot;Sec-Test is a forbidden request header&quot;, {&quot;Sec-Test&quot;: &quot;value&quot;});
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadershtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: forbidden request header management&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#forbidden-header-name&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;request-forbidden-headers.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,48 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function requestForbiddenHeaders(desc, forbiddenHeaders) {
-  var url = RESOURCES_DIR + &quot;inspect-headers.py&quot;;
-  var requestInit = {&quot;headers&quot;: forbiddenHeaders}
-  var urlParameters = &quot;?headers=&quot; + Object.keys(forbiddenHeaders).join(&quot;|&quot;);
-
-  promise_test(function(test){
-    return fetch(url + urlParameters, requestInit).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;);
-      for (var header in forbiddenHeaders)
-        assert_not_equals(resp.headers.get(&quot;x-request-&quot; + header), forbiddenHeaders[header], header + &quot; does not have the value we defined&quot;);
-    });
-  }, desc);
-}
-
-requestForbiddenHeaders(&quot;Accept-Charset is a forbidden request header&quot;, {&quot;Accept-Charset&quot;: &quot;utf-8&quot;});
-requestForbiddenHeaders(&quot;Accept-Encoding is a forbidden request header&quot;, {&quot;Accept-Encoding&quot;: &quot;&quot;});
-
-requestForbiddenHeaders(&quot;Access-Control-Request-Headers is a forbidden request header&quot;, {&quot;Access-Control-Request-Headers&quot;: &quot;&quot;});
-requestForbiddenHeaders(&quot;Access-Control-Request-Method is a forbidden request header&quot;, {&quot;Access-Control-Request-Method&quot;: &quot;&quot;});
-requestForbiddenHeaders(&quot;Connection is a forbidden request header&quot;, {&quot;Connection&quot;: &quot;close&quot;});
-requestForbiddenHeaders(&quot;Content-Length is a forbidden request header&quot;, {&quot;Content-Length&quot;: &quot;42&quot;});
-requestForbiddenHeaders(&quot;Cookie is a forbidden request header&quot;, {&quot;Cookie&quot;: &quot;cookie=none&quot;});
-requestForbiddenHeaders(&quot;Cookie2 is a forbidden request header&quot;, {&quot;Cookie2&quot;: &quot;cookie2=none&quot;});
-requestForbiddenHeaders(&quot;Date is a forbidden request header&quot;, {&quot;Date&quot;: &quot;Wed, 04 May 1988 22:22:22 GMT&quot;});
-requestForbiddenHeaders(&quot;DNT is a forbidden request header&quot;, {&quot;DNT&quot;: &quot;4&quot;});
-requestForbiddenHeaders(&quot;Expect is a forbidden request header&quot;, {&quot;Expect&quot;: &quot;100-continue&quot;});
-requestForbiddenHeaders(&quot;Host is a forbidden request header&quot;, {&quot;Host&quot;: &quot;http://wrong-host.com&quot;});
-requestForbiddenHeaders(&quot;Keep-Alive is a forbidden request header&quot;, {&quot;Keep-Alive&quot;: &quot;timeout=15&quot;});
-requestForbiddenHeaders(&quot;Origin is a forbidden request header&quot;, {&quot;Origin&quot;: &quot;http://wrong-origin.com&quot;});
-requestForbiddenHeaders(&quot;Referer is a forbidden request header&quot;, {&quot;Referer&quot;: &quot;http://wrong-referer.com&quot;});
-requestForbiddenHeaders(&quot;TE is a forbidden request header&quot;, {&quot;TE&quot;: &quot;trailers&quot;});
-requestForbiddenHeaders(&quot;Trailer is a forbidden request header&quot;, {&quot;Trailer&quot;: &quot;Accept&quot;});
-requestForbiddenHeaders(&quot;Transfer-Encoding is a forbidden request header&quot;, {&quot;Transfer-Encoding&quot;: &quot;chunked&quot;});
-requestForbiddenHeaders(&quot;Upgrade is a forbidden request header&quot;, {&quot;Upgrade&quot;: &quot;HTTP/2.0&quot;});
-requestForbiddenHeaders(&quot;Via is a forbidden request header&quot;, {&quot;Via&quot;: &quot;1.1 nowhere.com&quot;});
-requestForbiddenHeaders(&quot;Proxy- is a forbidden request header&quot;, {&quot;Proxy-&quot;: &quot;value&quot;});
-requestForbiddenHeaders(&quot;Proxy-Test is a forbidden request header&quot;, {&quot;Proxy-Test&quot;: &quot;value&quot;});
-requestForbiddenHeaders(&quot;Sec- is a forbidden request header&quot;, {&quot;Sec-&quot;: &quot;value&quot;});
-requestForbiddenHeaders(&quot;Sec-Test is a forbidden request header&quot;, {&quot;Sec-Test&quot;: &quot;value&quot;});
-
-done();
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestforbiddenheadersworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-
-PASS Fetch with HEAD with body 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-
-PASS Fetch with HEAD with body 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: HEAD method&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;/head&gt;
-  &lt;body&gt;
-    &lt;script&gt;
-      fetch_tests_from_worker(new Worker(&quot;request-head.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadanyexpectedtxtfromrev215162trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any-expected.txt (from rev 215162, trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker-expected.txt) (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Fetch with HEAD with body 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+promise_test(function(test) {
+  var requestInit = {&quot;method&quot;: &quot;HEAD&quot;, &quot;body&quot;: &quot;test&quot;};
+  return promise_rejects(test, new TypeError(), fetch(&quot;.&quot;, requestInit));
+}, &quot;Fetch with HEAD with body&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: HEAD method&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;/head&gt;
-  &lt;body&gt;
-    &lt;script src=&quot;request-head.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-}
-
-promise_test(function(test) {
-  var requestInit = {&quot;method&quot;: &quot;HEAD&quot;, &quot;body&quot;: &quot;test&quot;};
-  return promise_rejects(test, new TypeError(), fetch(&quot;.&quot;, requestInit));
-}, &quot;Fetch with HEAD with body&quot;);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,26 +0,0 @@
</span><del>-
-PASS Fetch with GET 
-FAIL Fetch with HEAD assert_equals: Request should have header content-length: null expected (object) null but got (string) &quot;0&quot;
-PASS Fetch with PUT without body 
-PASS Fetch with PUT with body 
-PASS Fetch with POST without body 
-PASS Fetch with POST with text body 
-PASS Fetch with POST with FormData body 
-PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;&quot;
-FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Float32Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Float64Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with DataView body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-PASS Fetch with POST with Blob body with mime type 
-FAIL Fetch with Chicken assert_equals: Request should have header content-length: null expected (object) null but got (string) &quot;0&quot;
-PASS Fetch with Chicken with body 
-PASS Fetch with GET and mode &quot;cors&quot; does not need an Origin header 
-PASS Fetch with POST and mode &quot;same-origin&quot; needs an Origin header 
-PASS Fetch with POST and mode &quot;no-cors&quot; needs an Origin header 
-PASS Fetch with PUT and mode &quot;same-origin&quot; needs an Origin header 
-PASS Fetch with TacO and mode &quot;same-origin&quot; needs an Origin header 
-PASS Fetch with TacO and mode &quot;cors&quot; needs an Origin header 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,26 +0,0 @@
</span><del>-
-PASS Fetch with GET 
-FAIL Fetch with HEAD assert_equals: Request should have header content-length: null expected (object) null but got (string) &quot;0&quot;
-PASS Fetch with PUT without body 
-PASS Fetch with PUT with body 
-PASS Fetch with POST without body 
-PASS Fetch with POST with text body 
-FAIL Fetch with POST with FormData body Can't find variable: FormData
-PASS Fetch with POST with URLSearchParams body 
-FAIL Fetch with POST with Blob body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;&quot;
-FAIL Fetch with POST with ArrayBuffer body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Uint8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Int8Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Float32Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with Float64Array body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-FAIL Fetch with POST with DataView body assert_equals: Request should have header content-type: null expected (object) null but got (string) &quot;application/x-www-form-urlencoded&quot;
-PASS Fetch with POST with Blob body with mime type 
-FAIL Fetch with Chicken assert_equals: Request should have header content-length: null expected (object) null but got (string) &quot;0&quot;
-PASS Fetch with Chicken with body 
-PASS Fetch with GET and mode &quot;cors&quot; does not need an Origin header 
-PASS Fetch with POST and mode &quot;same-origin&quot; needs an Origin header 
-PASS Fetch with POST and mode &quot;no-cors&quot; needs an Origin header 
-PASS Fetch with PUT and mode &quot;same-origin&quot; needs an Origin header 
-PASS Fetch with TacO and mode &quot;same-origin&quot; needs an Origin header 
-PASS Fetch with TacO and mode &quot;cors&quot; needs an Origin header 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: User agent add headers to request&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;request-headers.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 42: ReferenceError: Can't find variable: RESOURCES_DIR
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: RESOURCES_DIR
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,81 @@
</span><ins>+// META: script=../resources/utils.js
+
+function checkContentType(contentType, body)
+{
+    if (self.FormData &amp;&amp; body instanceof self.FormData) {
+        assert_true(contentType.startsWith(&quot;multipart/form-data; boundary=&quot;), &quot;Request should have header content-type starting with multipart/form-data; boundary=, but got &quot; + contentType);
+        return;
+    }
+
+    var expectedContentType = &quot;text/plain;charset=UTF-8&quot;;
+    if(body === null || body instanceof ArrayBuffer || body.buffer instanceof ArrayBuffer)
+        expectedContentType = null;
+    else if (body instanceof Blob)
+        expectedContentType = body.type ? body.type : null;
+    else if (body instanceof URLSearchParams)
+        expectedContentType = &quot;application/x-www-form-urlencoded;charset=UTF-8&quot;;
+
+    assert_equals(contentType , expectedContentType, &quot;Request should have header content-type: &quot; + expectedContentType);
+}
+
+function requestHeaders(desc, url, method, body, expectedOrigin, expectedContentLength) {
+  var urlParameters = &quot;?headers=origin|user-agent|accept-charset|content-length|content-type&quot;;
+  var requestInit = {&quot;method&quot;: method}
+  promise_test(function(test){
+    if (typeof body === &quot;function&quot;)
+      body = body();
+    if (body)
+      requestInit[&quot;body&quot;] = body;
+    return fetch(url + urlParameters, requestInit).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_true(resp.headers.has(&quot;x-request-user-agent&quot;), &quot;Request has header user-agent&quot;);
+      assert_false(resp.headers.has(&quot;accept-charset&quot;), &quot;Request has header accept-charset&quot;);
+      assert_equals(resp.headers.get(&quot;x-request-origin&quot;) , expectedOrigin, &quot;Request should have header origin: &quot; + expectedOrigin);
+      if (expectedContentLength !== undefined)
+        assert_equals(resp.headers.get(&quot;x-request-content-length&quot;) , expectedContentLength, &quot;Request should have header content-length: &quot; + expectedContentLength);
+      checkContentType(resp.headers.get(&quot;x-request-content-type&quot;), body);
+    });
+  }, desc);
+}
+
+var url = RESOURCES_DIR + &quot;inspect-headers.py&quot;
+
+requestHeaders(&quot;Fetch with GET&quot;, url, &quot;GET&quot;, null, null, null);
+requestHeaders(&quot;Fetch with HEAD&quot;, url, &quot;HEAD&quot;, null, null, null);
+requestHeaders(&quot;Fetch with PUT without body&quot;, url, &quot;POST&quot;, null, location.origin, &quot;0&quot;);
+requestHeaders(&quot;Fetch with PUT with body&quot;, url, &quot;PUT&quot;, &quot;Request's body&quot;, location.origin, &quot;14&quot;);
+requestHeaders(&quot;Fetch with POST without body&quot;, url, &quot;POST&quot;, null, location.origin, &quot;0&quot;);
+requestHeaders(&quot;Fetch with POST with text body&quot;, url, &quot;POST&quot;, &quot;Request's body&quot;, location.origin, &quot;14&quot;);
+requestHeaders(&quot;Fetch with POST with FormData body&quot;, url, &quot;POST&quot;, function() { return new FormData(); }, location.origin);
+requestHeaders(&quot;Fetch with POST with URLSearchParams body&quot;, url, &quot;POST&quot;, function() { return new URLSearchParams(&quot;name=value&quot;); }, location.origin, &quot;10&quot;);
+requestHeaders(&quot;Fetch with POST with Blob body&quot;, url, &quot;POST&quot;, new Blob([&quot;Test&quot;]), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with POST with ArrayBuffer body&quot;, url, &quot;POST&quot;, new ArrayBuffer(4), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with POST with Uint8Array body&quot;, url, &quot;POST&quot;, new Uint8Array(4), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with POST with Int8Array body&quot;, url, &quot;POST&quot;, new Int8Array(4), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with POST with Float32Array body&quot;, url, &quot;POST&quot;, new Float32Array(1), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with POST with Float64Array body&quot;, url, &quot;POST&quot;, new Float64Array(1), location.origin, &quot;8&quot;);
+requestHeaders(&quot;Fetch with POST with DataView body&quot;, url, &quot;POST&quot;, new DataView(new ArrayBuffer(8), 0, 4), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with POST with Blob body with mime type&quot;, url, &quot;POST&quot;, new Blob([&quot;Test&quot;], { type: &quot;text/maybe&quot; }), location.origin, &quot;4&quot;);
+requestHeaders(&quot;Fetch with Chicken&quot;, url, &quot;Chicken&quot;, null, location.origin, null);
+requestHeaders(&quot;Fetch with Chicken with body&quot;, url, &quot;Chicken&quot;, &quot;Request's body&quot;, location.origin, &quot;14&quot;);
+
+function requestOriginHeader(method, mode, needsOrigin) {
+  promise_test(function(test){
+    return fetch(url + &quot;?headers=origin&quot;, {method:method, mode:mode}).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;);
+      if(needsOrigin)
+        assert_equals(resp.headers.get(&quot;x-request-origin&quot;) , location.origin, &quot;Request should have an Origin header with origin: &quot; + location.origin);
+      else
+        assert_equals(resp.headers.get(&quot;x-request-origin&quot;), null, &quot;Request should not have an Origin header&quot;)
+    });
+  }, &quot;Fetch with &quot; + method + &quot; and mode \&quot;&quot; + mode + &quot;\&quot; &quot; + (needsOrigin ? &quot;needs&quot; : &quot;does not need&quot;) + &quot; an Origin header&quot;);
+}
+
+requestOriginHeader(&quot;GET&quot;, &quot;cors&quot;, false);
+requestOriginHeader(&quot;POST&quot;, &quot;same-origin&quot;, true);
+requestOriginHeader(&quot;POST&quot;, &quot;no-cors&quot;, true);
+requestOriginHeader(&quot;PUT&quot;, &quot;same-origin&quot;, true);
+requestOriginHeader(&quot;TacO&quot;, &quot;same-origin&quot;, true);
+requestOriginHeader(&quot;TacO&quot;, &quot;cors&quot;, true);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadershtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: User agent add headers to request&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;request-headers.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,86 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function checkContentType(contentType, body)
-{
-    if (self.FormData &amp;&amp; body instanceof self.FormData) {
-        assert_true(contentType.startsWith(&quot;multipart/form-data; boundary=&quot;), &quot;Request should have header content-type starting with multipart/form-data; boundary=, but got &quot; + contentType);
-        return;
-    }
-
-    var expectedContentType = &quot;text/plain;charset=UTF-8&quot;;
-    if(body === null || body instanceof ArrayBuffer || body.buffer instanceof ArrayBuffer)
-        expectedContentType = null;
-    else if (body instanceof Blob)
-        expectedContentType = body.type ? body.type : null;
-    else if (body instanceof URLSearchParams)
-        expectedContentType = &quot;application/x-www-form-urlencoded;charset=UTF-8&quot;;
-
-    assert_equals(contentType , expectedContentType, &quot;Request should have header content-type: &quot; + expectedContentType);
-}
-
-function requestHeaders(desc, url, method, body, expectedOrigin, expectedContentLength) {
-  var urlParameters = &quot;?headers=origin|user-agent|accept-charset|content-length|content-type&quot;;
-  var requestInit = {&quot;method&quot;: method}
-  promise_test(function(test){
-    if (typeof body === &quot;function&quot;)
-      body = body();
-    if (body)
-      requestInit[&quot;body&quot;] = body;
-    return fetch(url + urlParameters, requestInit).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_true(resp.headers.has(&quot;x-request-user-agent&quot;), &quot;Request has header user-agent&quot;);
-      assert_false(resp.headers.has(&quot;accept-charset&quot;), &quot;Request has header accept-charset&quot;);
-      assert_equals(resp.headers.get(&quot;x-request-origin&quot;) , expectedOrigin, &quot;Request should have header origin: &quot; + expectedOrigin);
-      if (expectedContentLength !== undefined)
-        assert_equals(resp.headers.get(&quot;x-request-content-length&quot;) , expectedContentLength, &quot;Request should have header content-length: &quot; + expectedContentLength);
-      checkContentType(resp.headers.get(&quot;x-request-content-type&quot;), body);
-    });
-  }, desc);
-}
-
-var url = RESOURCES_DIR + &quot;inspect-headers.py&quot;
-
-requestHeaders(&quot;Fetch with GET&quot;, url, &quot;GET&quot;, null, null, null);
-requestHeaders(&quot;Fetch with HEAD&quot;, url, &quot;HEAD&quot;, null, null, null);
-requestHeaders(&quot;Fetch with PUT without body&quot;, url, &quot;POST&quot;, null, location.origin, &quot;0&quot;);
-requestHeaders(&quot;Fetch with PUT with body&quot;, url, &quot;PUT&quot;, &quot;Request's body&quot;, location.origin, &quot;14&quot;);
-requestHeaders(&quot;Fetch with POST without body&quot;, url, &quot;POST&quot;, null, location.origin, &quot;0&quot;);
-requestHeaders(&quot;Fetch with POST with text body&quot;, url, &quot;POST&quot;, &quot;Request's body&quot;, location.origin, &quot;14&quot;);
-requestHeaders(&quot;Fetch with POST with FormData body&quot;, url, &quot;POST&quot;, function() { return new FormData(); }, location.origin);
-requestHeaders(&quot;Fetch with POST with URLSearchParams body&quot;, url, &quot;POST&quot;, function() { return new URLSearchParams(&quot;name=value&quot;); }, location.origin, &quot;10&quot;);
-requestHeaders(&quot;Fetch with POST with Blob body&quot;, url, &quot;POST&quot;, new Blob([&quot;Test&quot;]), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with POST with ArrayBuffer body&quot;, url, &quot;POST&quot;, new ArrayBuffer(4), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with POST with Uint8Array body&quot;, url, &quot;POST&quot;, new Uint8Array(4), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with POST with Int8Array body&quot;, url, &quot;POST&quot;, new Int8Array(4), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with POST with Float32Array body&quot;, url, &quot;POST&quot;, new Float32Array(1), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with POST with Float64Array body&quot;, url, &quot;POST&quot;, new Float64Array(1), location.origin, &quot;8&quot;);
-requestHeaders(&quot;Fetch with POST with DataView body&quot;, url, &quot;POST&quot;, new DataView(new ArrayBuffer(8), 0, 4), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with POST with Blob body with mime type&quot;, url, &quot;POST&quot;, new Blob([&quot;Test&quot;], { type: &quot;text/maybe&quot; }), location.origin, &quot;4&quot;);
-requestHeaders(&quot;Fetch with Chicken&quot;, url, &quot;Chicken&quot;, null, location.origin, null);
-requestHeaders(&quot;Fetch with Chicken with body&quot;, url, &quot;Chicken&quot;, &quot;Request's body&quot;, location.origin, &quot;14&quot;);
-
-function requestOriginHeader(method, mode, needsOrigin) {
-  promise_test(function(test){
-    return fetch(url + &quot;?headers=origin&quot;, {method:method, mode:mode}).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;);
-      if(needsOrigin)
-        assert_equals(resp.headers.get(&quot;x-request-origin&quot;) , location.origin, &quot;Request should have an Origin header with origin: &quot; + location.origin);
-      else
-        assert_equals(resp.headers.get(&quot;x-request-origin&quot;), null, &quot;Request should not have an Origin header&quot;)
-    });
-  }, &quot;Fetch with &quot; + method + &quot; and mode \&quot;&quot; + mode + &quot;\&quot; &quot; + (needsOrigin ? &quot;needs&quot; : &quot;does not need&quot;) + &quot; an Origin header&quot;);
-}
-
-requestOriginHeader(&quot;GET&quot;, &quot;cors&quot;, false);
-requestOriginHeader(&quot;POST&quot;, &quot;same-origin&quot;, true);
-requestOriginHeader(&quot;POST&quot;, &quot;no-cors&quot;, true);
-requestOriginHeader(&quot;PUT&quot;, &quot;same-origin&quot;, true);
-requestOriginHeader(&quot;TacO&quot;, &quot;same-origin&quot;, true);
-requestOriginHeader(&quot;TacO&quot;, &quot;cors&quot;, true);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestheadersworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +0,0 @@
</span><del>-
-PASS about:client referrer 
-PASS url referrer 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerredirectedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +1,4 @@
</span><span class="cx"> 
</span><del>-PASS about:client referrer 
-PASS url referrer 
</del><ins>+FAIL about:client referrer Can't find variable: RESOURCES_DIR
+FAIL url referrer Can't find variable: RESOURCES_DIR
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerredirectedworkerhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -8,7 +8,7 @@
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span><span class="cx">     &lt;script&gt;
</span><del>-      let finalURL = &quot;/fetch/api/basic/request-referrer.js&quot;;
</del><ins>+      let finalURL = &quot;/fetch/api/basic/request-referrer.any.worker.js&quot;;
</ins><span class="cx">       let url = &quot;/fetch/api/resources/redirect.py?location=&quot; +
</span><span class="cx">                 encodeURIComponent(finalURL);
</span><span class="cx">       fetch_tests_from_worker(new Worker(url));
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +0,0 @@
</span><del>-
-PASS about:client referrer 
-PASS url referrer 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: referrer header&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;/head&gt;
-  &lt;body&gt;
-    &lt;script&gt;
-      fetch_tests_from_worker(new Worker(&quot;request-referrer.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferreranyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+FAIL about:client referrer Can't find variable: RESOURCES_DIR
+FAIL url referrer Can't find variable: RESOURCES_DIR
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferreranyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferreranyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+// META: script=../resources/utils.js
+
+function testReferrer(referrer, expected, desc) {
+  promise_test(function(test) {
+    var url = RESOURCES_DIR + &quot;inspect-headers.py?headers=referer&quot;
+    var req = new Request(url, { referrer: referrer });
+    return fetch(req).then(function(resp) {
+      var actual = resp.headers.get(&quot;x-request-referer&quot;);
+      if (expected) {
+        assert_equals(actual, expected, &quot;request's referer should be: &quot; + expected);
+        return;
+      }
+      if (actual) {
+        assert_equals(actual, &quot;&quot;, &quot;request's referer should be empty&quot;);
+      }
+    });
+  }, desc);
+}
+
+testReferrer(&quot;about:client&quot;, self.location.href, 'about:client referrer');
+
+var fooURL = new URL(&quot;./foo&quot;, self.location).href;
+testReferrer(fooURL, fooURL, 'url referrer');
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: fetch() respects Request referrer value&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;/head&gt;
-  &lt;body&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;request-referrer.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,28 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function testReferrer(referrer, expected, desc) {
-  promise_test(function(test) {
-    var url = RESOURCES_DIR + &quot;inspect-headers.py?headers=referer&quot;
-    var req = new Request(url, { referrer: referrer });
-    return fetch(req).then(function(resp) {
-      var actual = resp.headers.get(&quot;x-request-referer&quot;);
-      if (expected) {
-        assert_equals(actual, expected, &quot;request's referer should be: &quot; + expected);
-        return;
-      }
-      if (actual) {
-        assert_equals(actual, &quot;&quot;, &quot;request's referer should be empty&quot;);
-      }
-    });
-  }, desc);
-}
-
-testReferrer(&quot;about:client&quot;, self.location.href, 'about:client referrer');
-
-var fooURL = new URL(&quot;./foo&quot;, self.location).href;
-testReferrer(fooURL, fooURL, 'url referrer');
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestreferrerworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-
-PASS Fetch with PUT with body 
-PASS Fetch with POST with text body 
-PASS Fetch with POST with URLSearchParams body 
-PASS Fetch with POST with Blob body 
-PASS Fetch with POST with ArrayBuffer body 
-PASS Fetch with POST with Uint8Array body 
-PASS Fetch with POST with Int8Array body 
-PASS Fetch with POST with Float32Array body 
-PASS Fetch with POST with Float64Array body 
-PASS Fetch with POST with DataView body 
-PASS Fetch with POST with Blob body with mime type 
-FAIL Fetch with POST with ReadableStream assert_equals: expected &quot;Test&quot; but got &quot;&quot;
-FAIL Fetch with POST with ReadableStream containing String undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing null undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing number undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing ArrayBuffer undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing Blob undefined is not an object (evaluating 'promise.then')
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-
-PASS Fetch with PUT with body 
-PASS Fetch with POST with text body 
-PASS Fetch with POST with URLSearchParams body 
-PASS Fetch with POST with Blob body 
-PASS Fetch with POST with ArrayBuffer body 
-PASS Fetch with POST with Uint8Array body 
-PASS Fetch with POST with Int8Array body 
-PASS Fetch with POST with Float32Array body 
-PASS Fetch with POST with Float64Array body 
-PASS Fetch with POST with DataView body 
-PASS Fetch with POST with Blob body with mime type 
-FAIL Fetch with POST with ReadableStream assert_equals: expected &quot;Test&quot; but got &quot;&quot;
-FAIL Fetch with POST with ReadableStream containing String undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing null undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing number undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing ArrayBuffer undefined is not an object (evaluating 'promise.then')
-FAIL Fetch with POST with ReadableStream containing Blob undefined is not an object (evaluating 'promise.then')
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: Upload&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;/head&gt;
-  &lt;body&gt;
-    &lt;script&gt;
-      fetch_tests_from_worker(new Worker(&quot;request-upload.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 27: ReferenceError: Can't find variable: RESOURCES_DIR
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: RESOURCES_DIR
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,122 @@
</span><ins>+// META: script=../resources/utils.js
+
+function testUpload(desc, url, method, createBody, expectedBody) {
+  var requestInit = {&quot;method&quot;: method}
+  promise_test(function(test){
+    let body = createBody();
+    if (body)
+      requestInit[&quot;body&quot;] = body;
+    return fetch(url, requestInit).then(function(resp) {
+      return resp.text().then((text)=&gt; {
+        assert_equals(text, expectedBody);
+      });
+    });
+  }, desc);
+}
+
+function testUploadFailure(desc, url, method, createBody) {
+  const requestInit = {&quot;method&quot;: method};
+  promise_test(test =&gt; {
+    let body = createBody();
+    if (body)
+      requestInit[&quot;body&quot;] = body;
+    return promise_rejects(new TypeError(), fetch(url, requestInit));
+  }, desc);
+}
+
+var url = RESOURCES_DIR + &quot;echo-content.py&quot;
+
+testUpload(&quot;Fetch with PUT with body&quot;, url,
+  &quot;PUT&quot;,
+  () =&gt; &quot;Request's body&quot;,
+  &quot;Request's body&quot;);
+testUpload(&quot;Fetch with POST with text body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; &quot;Request's body&quot;,
+  &quot;Request's body&quot;);
+testUpload(&quot;Fetch with POST with URLSearchParams body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new URLSearchParams(&quot;name=value&quot;),
+  &quot;name=value&quot;);
+testUpload(&quot;Fetch with POST with Blob body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new Blob([&quot;Test&quot;]),
+  &quot;Test&quot;);
+testUpload(&quot;Fetch with POST with ArrayBuffer body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new ArrayBuffer(4),
+  &quot;\0\0\0\0&quot;);
+testUpload(&quot;Fetch with POST with Uint8Array body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new Uint8Array(4),
+  &quot;\0\0\0\0&quot;);
+testUpload(&quot;Fetch with POST with Int8Array body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new Int8Array(4),
+  &quot;\0\0\0\0&quot;);
+testUpload(&quot;Fetch with POST with Float32Array body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new Float32Array(1),
+  &quot;\0\0\0\0&quot;);
+testUpload(&quot;Fetch with POST with Float64Array body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new Float64Array(1),
+  &quot;\0\0\0\0\0\0\0\0&quot;);
+testUpload(&quot;Fetch with POST with DataView body&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new DataView(new ArrayBuffer(8), 0, 4),
+  &quot;\0\0\0\0&quot;);
+testUpload(&quot;Fetch with POST with Blob body with mime type&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; new Blob([&quot;Test&quot;], { type: &quot;text/maybe&quot; }),
+  &quot;Test&quot;);
+testUpload(&quot;Fetch with POST with ReadableStream&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; {
+    new ReadableStream({start: controller =&gt; {
+      const encoder = new TextEncoder();
+      controller.enqueue(encoder.encode(&quot;Test&quot;));
+      controller.close();
+    }})
+  },
+  &quot;Test&quot;);
+testUploadFailure(&quot;Fetch with POST with ReadableStream containing String&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; {
+    new ReadableStream({start: controller =&gt; {
+      controller.enqueue(&quot;Test&quot;);
+      controller.close();
+    }})
+  });
+testUploadFailure(&quot;Fetch with POST with ReadableStream containing null&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; {
+    new ReadableStream({start: controller =&gt; {
+      controller.enqueue(null);
+      controller.close();
+    }})
+  });
+testUploadFailure(&quot;Fetch with POST with ReadableStream containing number&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; {
+    new ReadableStream({start: controller =&gt; {
+      controller.enqueue(99);
+      controller.close();
+    }})
+  });
+testUploadFailure(&quot;Fetch with POST with ReadableStream containing ArrayBuffer&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; {
+    new ReadableStream({start: controller =&gt; {
+      controller.enqueue(new ArrayBuffer());
+      controller.close();
+    }})
+  });
+testUploadFailure(&quot;Fetch with POST with ReadableStream containing Blob&quot;, url,
+  &quot;POST&quot;,
+  () =&gt; {
+    new ReadableStream({start: controller =&gt; {
+      controller.enqueue(new Blob());
+      controller.close();
+    }})
+  });
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,13 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: Uploading content&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/utils.js&quot;&gt;&lt;/script&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;script src=&quot;request-upload.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,127 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function testUpload(desc, url, method, createBody, expectedBody) {
-  var requestInit = {&quot;method&quot;: method}
-  promise_test(function(test){
-    let body = createBody();
-    if (body)
-      requestInit[&quot;body&quot;] = body;
-    return fetch(url, requestInit).then(function(resp) {
-      return resp.text().then((text)=&gt; {
-        assert_equals(text, expectedBody);
-      });
-    });
-  }, desc);
-}
-
-function testUploadFailure(desc, url, method, createBody) {
-  const requestInit = {&quot;method&quot;: method};
-  promise_test(test =&gt; {
-    let body = createBody();
-    if (body)
-      requestInit[&quot;body&quot;] = body;
-    return promise_rejects(new TypeError(), fetch(url, requestInit));
-  }, desc);
-}
-
-var url = RESOURCES_DIR + &quot;echo-content.py&quot;
-
-testUpload(&quot;Fetch with PUT with body&quot;, url,
-  &quot;PUT&quot;,
-  () =&gt; &quot;Request's body&quot;,
-  &quot;Request's body&quot;);
-testUpload(&quot;Fetch with POST with text body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; &quot;Request's body&quot;,
-  &quot;Request's body&quot;);
-testUpload(&quot;Fetch with POST with URLSearchParams body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new URLSearchParams(&quot;name=value&quot;),
-  &quot;name=value&quot;);
-testUpload(&quot;Fetch with POST with Blob body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new Blob([&quot;Test&quot;]),
-  &quot;Test&quot;);
-testUpload(&quot;Fetch with POST with ArrayBuffer body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new ArrayBuffer(4),
-  &quot;\0\0\0\0&quot;);
-testUpload(&quot;Fetch with POST with Uint8Array body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new Uint8Array(4),
-  &quot;\0\0\0\0&quot;);
-testUpload(&quot;Fetch with POST with Int8Array body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new Int8Array(4),
-  &quot;\0\0\0\0&quot;);
-testUpload(&quot;Fetch with POST with Float32Array body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new Float32Array(1),
-  &quot;\0\0\0\0&quot;);
-testUpload(&quot;Fetch with POST with Float64Array body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new Float64Array(1),
-  &quot;\0\0\0\0\0\0\0\0&quot;);
-testUpload(&quot;Fetch with POST with DataView body&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new DataView(new ArrayBuffer(8), 0, 4),
-  &quot;\0\0\0\0&quot;);
-testUpload(&quot;Fetch with POST with Blob body with mime type&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; new Blob([&quot;Test&quot;], { type: &quot;text/maybe&quot; }),
-  &quot;Test&quot;);
-testUpload(&quot;Fetch with POST with ReadableStream&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; {
-    new ReadableStream({start: controller =&gt; {
-      const encoder = new TextEncoder();
-      controller.enqueue(encoder.encode(&quot;Test&quot;));
-      controller.close();
-    }})
-  },
-  &quot;Test&quot;);
-testUploadFailure(&quot;Fetch with POST with ReadableStream containing String&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; {
-    new ReadableStream({start: controller =&gt; {
-      controller.enqueue(&quot;Test&quot;);
-      controller.close();
-    }})
-  });
-testUploadFailure(&quot;Fetch with POST with ReadableStream containing null&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; {
-    new ReadableStream({start: controller =&gt; {
-      controller.enqueue(null);
-      controller.close();
-    }})
-  });
-testUploadFailure(&quot;Fetch with POST with ReadableStream containing number&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; {
-    new ReadableStream({start: controller =&gt; {
-      controller.enqueue(99);
-      controller.close();
-    }})
-  });
-testUploadFailure(&quot;Fetch with POST with ReadableStream containing ArrayBuffer&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; {
-    new ReadableStream({start: controller =&gt; {
-      controller.enqueue(new ArrayBuffer());
-      controller.close();
-    }})
-  });
-testUploadFailure(&quot;Fetch with POST with ReadableStream containing Blob&quot;, url,
-  &quot;POST&quot;,
-  () =&gt; {
-    new ReadableStream({start: controller =&gt; {
-      controller.enqueue(new Blob());
-      controller.close();
-    }})
-  });
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicrequestuploadworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: Fetch API cannot load about:blank. Preflight response is not successful
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:invalid.com. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:config. Cross origin requests are only supported for HTTP.
-CONSOLE MESSAGE: line 1: Fetch API cannot load about:unicorn. Cross origin requests are only supported for HTTP.
-
-FAIL Fetching about:blank (GET) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL Fetching about:blank (PUT) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL Fetching about:blank (POST) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Fetching about:invalid.com is KO 
-PASS Fetching about:config is KO 
-PASS Fetching about:unicorn is KO 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-
-FAIL Fetching about:blank (GET) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL Fetching about:blank (PUT) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL Fetching about:blank (POST) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Fetching about:invalid.com is KO 
-PASS Fetching about:config is KO 
-PASS Fetching about:unicorn is KO 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: about scheme&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;scheme-about.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutanyexpectedtxtfromrev215162trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt (from rev 215162, trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-expected.txt) (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: Fetch API cannot load about:blank. Preflight response is not successful
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:blank. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:invalid.com. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:config. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: line 1: Fetch API cannot load about:unicorn. Cross origin requests are only supported for HTTP.
+
+FAIL Fetching about:blank (GET) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL Fetching about:blank (PUT) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+FAIL Fetching about:blank (POST) is OK promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+PASS Fetching about:invalid.com is KO 
+PASS Fetching about:config is KO 
+PASS Fetching about:unicorn is KO 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+// META: script=../resources/utils.js
+
+function checkFetchResponse(url, method, desc) {
+  if (!desc) {
+    var cut = (url.length &gt;= 40) ? &quot;[...]&quot; : &quot;&quot;;
+    cut += &quot; (&quot; + method + &quot;)&quot;
+    desc = &quot;Fetching &quot; + url.substring(0, 40) + cut + &quot; is OK&quot;
+  }
+  promise_test(function(test) {
+    return fetch(url, { method: method }).then(function(resp) {
+     assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+     assert_equals(resp.type, &quot;basic&quot;, &quot;response type is basic&quot;);
+     assert_equals(resp.headers.get(&quot;Content-Type&quot;), &quot;text/html;charset=utf-8&quot;, &quot;Content-Type is &quot; + resp.headers.get(&quot;Content-Type&quot;));
+     return resp.text();
+    })
+  }, desc);
+}
+
+checkFetchResponse(&quot;about:blank&quot;, &quot;GET&quot;);
+checkFetchResponse(&quot;about:blank&quot;, &quot;PUT&quot;);
+checkFetchResponse(&quot;about:blank&quot;, &quot;POST&quot;);
+
+function checkKoUrl(url, desc) {
+  if (!desc)
+    desc = &quot;Fetching &quot; + url.substring(0, 45) + &quot; is KO&quot;
+  promise_test(function(test) {
+    var promise = fetch(url);
+    return promise_rejects(test, new TypeError(), promise);
+  }, desc);
+}
+
+checkKoUrl(&quot;about:invalid.com&quot;);
+checkKoUrl(&quot;about:config&quot;);
+checkKoUrl(&quot;about:unicorn&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeabouthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: about scheme&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;scheme-about.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,39 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function checkFetchResponse(url, method, desc) {
-  if (!desc) {
-    var cut = (url.length &gt;= 40) ? &quot;[...]&quot; : &quot;&quot;;
-    cut += &quot; (&quot; + method + &quot;)&quot;
-    desc = &quot;Fetching &quot; + url.substring(0, 40) + cut + &quot; is OK&quot;
-  }
-  promise_test(function(test) {
-    return fetch(url, { method: method }).then(function(resp) {
-     assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
-     assert_equals(resp.type, &quot;basic&quot;, &quot;response type is basic&quot;);
-     assert_equals(resp.headers.get(&quot;Content-Type&quot;), &quot;text/html;charset=utf-8&quot;, &quot;Content-Type is &quot; + resp.headers.get(&quot;Content-Type&quot;));
-     return resp.text();
-    })
-  }, desc);
-}
-
-checkFetchResponse(&quot;about:blank&quot;, &quot;GET&quot;);
-checkFetchResponse(&quot;about:blank&quot;, &quot;PUT&quot;);
-checkFetchResponse(&quot;about:blank&quot;, &quot;POST&quot;);
-
-function checkKoUrl(url, desc) {
-  if (!desc)
-    desc = &quot;Fetching &quot; + url.substring(0, 45) + &quot; is KO&quot;
-  promise_test(function(test) {
-    var promise = fetch(url);
-    return promise_rejects(test, new TypeError(), promise);
-  }, desc);
-}
-
-checkKoUrl(&quot;about:invalid.com&quot;);
-checkKoUrl(&quot;about:config&quot;);
-checkKoUrl(&quot;about:unicorn&quot;);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemeaboutworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-
-PASS Fetching data:,response%27s%20body is OK 
-PASS Fetching data:,response%27s%20body is OK (same-origin) 
-PASS Fetching data:,response%27s%20body is OK (cors) 
-PASS Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK 
-PASS Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK 
-PASS Fetching [POST] data:,response%27s%20body is OK 
-PASS Fetching [HEAD] data:,response%27s%20body is OK 
-FAIL Fetching [GET] data:notAdataUrl.com is KO assert_unreached: Should have rejected: undefined Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-
-PASS Fetching data:,response%27s%20body is OK 
-PASS Fetching data:,response%27s%20body is OK (same-origin) 
-PASS Fetching data:,response%27s%20body is OK (cors) 
-PASS Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK 
-PASS Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK 
-PASS Fetching [POST] data:,response%27s%20body is OK 
-PASS Fetching [HEAD] data:,response%27s%20body is OK 
-FAIL Fetching [GET] data:notAdataUrl.com is KO assert_unreached: Should have rejected: undefined Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: data scheme&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;scheme-data.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataanyexpectedtxtfromrev215162trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt (from rev 215162, trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt) (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+
+PASS Fetching data:,response%27s%20body is OK 
+PASS Fetching data:,response%27s%20body is OK (same-origin) 
+PASS Fetching data:,response%27s%20body is OK (cors) 
+PASS Fetching data:text/plain;base64,cmVzcG9uc2UncyBib[...] is OK 
+PASS Fetching data:image/png;base64,cmVzcG9uc2UncyBib2[...] is OK 
+PASS Fetching [POST] data:,response%27s%20body is OK 
+PASS Fetching [HEAD] data:,response%27s%20body is OK 
+FAIL Fetching [GET] data:notAdataUrl.com is KO assert_unreached: Should have rejected: undefined Reached unreachable code
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+// META: script=../resources/utils.js
+
+function checkFetchResponse(url, data, mime, fetchMode, method) {
+  var cut = (url.length &gt;= 40) ? &quot;[...]&quot; : &quot;&quot;;
+  desc = &quot;Fetching &quot; + (method ? &quot;[&quot; + method + &quot;] &quot; : &quot;&quot;) + url.substring(0, 40) + cut + &quot; is OK&quot;;
+  var init = {&quot;method&quot;: method || &quot;GET&quot;};
+  if (fetchMode) {
+    init.mode = fetchMode;
+    desc += &quot; (&quot; + fetchMode + &quot;)&quot;;
+  }
+  promise_test(function(test) {
+    return fetch(url, init).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+      assert_equals(resp.statusText, &quot;OK&quot;, &quot;HTTP statusText is OK&quot;);
+      assert_equals(resp.type, &quot;basic&quot;, &quot;response type is basic&quot;);
+      assert_equals(resp.headers.get(&quot;Content-Type&quot;), mime, &quot;Content-Type is &quot; + resp.headers.get(&quot;Content-Type&quot;));
+     return resp.text();
+    }).then(function(body) {
+        assert_equals(body, data, &quot;Response's body is correct&quot;);
+    });
+  }, desc);
+}
+
+checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;);
+checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, &quot;same-origin&quot;);
+checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, &quot;cors&quot;);
+checkFetchResponse(&quot;data:text/plain;base64,cmVzcG9uc2UncyBib2R5&quot;, &quot;response's body&quot;, &quot;text/plain&quot;);
+checkFetchResponse(&quot;data:image/png;base64,cmVzcG9uc2UncyBib2R5&quot;,
+                   &quot;response's body&quot;,
+                   &quot;image/png&quot;);
+checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, null, &quot;POST&quot;);
+checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, null, &quot;HEAD&quot;);
+
+function checkKoUrl(url, method, desc) {
+  var cut = (url.length &gt;= 40) ? &quot;[...]&quot; : &quot;&quot;;
+  desc = &quot;Fetching [&quot; + method + &quot;] &quot; + url.substring(0, 45) + cut + &quot; is KO&quot;
+  promise_test(function(test) {
+    return promise_rejects(test, new TypeError(), fetch(url, {&quot;method&quot;: method}));
+  }, desc);
+}
+
+checkKoUrl(&quot;data:notAdataUrl.com&quot;, &quot;GET&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedatahtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: data scheme&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#basic-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;scheme-data.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedatajs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,47 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function checkFetchResponse(url, data, mime, fetchMode, method) {
-  var cut = (url.length &gt;= 40) ? &quot;[...]&quot; : &quot;&quot;;
-  desc = &quot;Fetching &quot; + (method ? &quot;[&quot; + method + &quot;] &quot; : &quot;&quot;) + url.substring(0, 40) + cut + &quot; is OK&quot;;
-  var init = {&quot;method&quot;: method || &quot;GET&quot;};
-  if (fetchMode) {
-    init.mode = fetchMode;
-    desc += &quot; (&quot; + fetchMode + &quot;)&quot;;
-  }
-  promise_test(function(test) {
-    return fetch(url, init).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
-      assert_equals(resp.statusText, &quot;OK&quot;, &quot;HTTP statusText is OK&quot;);
-      assert_equals(resp.type, &quot;basic&quot;, &quot;response type is basic&quot;);
-      assert_equals(resp.headers.get(&quot;Content-Type&quot;), mime, &quot;Content-Type is &quot; + resp.headers.get(&quot;Content-Type&quot;));
-     return resp.text();
-    }).then(function(body) {
-        assert_equals(body, data, &quot;Response's body is correct&quot;);
-    });
-  }, desc);
-}
-
-checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;);
-checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, &quot;same-origin&quot;);
-checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, &quot;cors&quot;);
-checkFetchResponse(&quot;data:text/plain;base64,cmVzcG9uc2UncyBib2R5&quot;, &quot;response's body&quot;, &quot;text/plain&quot;);
-checkFetchResponse(&quot;data:image/png;base64,cmVzcG9uc2UncyBib2R5&quot;,
-                   &quot;response's body&quot;,
-                   &quot;image/png&quot;);
-checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, null, &quot;POST&quot;);
-checkFetchResponse(&quot;data:,response%27s%20body&quot;, &quot;response's body&quot;, &quot;text/plain;charset=US-ASCII&quot;, null, &quot;HEAD&quot;);
-
-function checkKoUrl(url, method, desc) {
-  var cut = (url.length &gt;= 40) ? &quot;[...]&quot; : &quot;&quot;;
-  desc = &quot;Fetching [&quot; + method + &quot;] &quot; + url.substring(0, 45) + cut + &quot; is KO&quot;
-  promise_test(function(test) {
-    return promise_rejects(test, new TypeError(), fetch(url, {&quot;method&quot;: method}));
-  }, desc);
-}
-
-checkKoUrl(&quot;data:notAdataUrl.com&quot;, &quot;GET&quot;);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicschemedataworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-
-PASS Stream response's body 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-
-PASS Stream response's body 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: retrieve response's body progressively&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;stream-response.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL Stream response's body Can't find variable: RESOURCES_DIR
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+// META: script=../resources/utils.js
+
+function streamBody(reader, test, count) {
+  return reader.read().then(function(data) {
+    if (!data.done &amp;&amp; count &lt; 2) {
+      count += 1;
+      return streamBody(reader, test, count);
+    } else {
+      test.step(function() {
+        assert_true(count &gt;= 2, &quot;Retrieve body progressively&quot;);
+      });
+    }
+  });
+}
+
+//simulate streaming:
+//count is large enough to let the UA deliver the body before it is completely retrieved
+promise_test(function(test) {
+  return fetch(RESOURCES_DIR + &quot;trickle.py?ms=30&amp;count=100&quot;).then(function(resp) {
+    var count = 0;
+    if (resp.body)
+      return streamBody(resp.body.getReader(), test, count);
+    else
+      test.step(function() {
+        assert_unreached( &quot;Body does not exist in response&quot;);
+      });
+  });
+}, &quot;Stream response's body&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponsehtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: retrieve response's body progressively&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;stream-response.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponsejs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,33 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function streamBody(reader, test, count) {
-  return reader.read().then(function(data) {
-    if (!data.done &amp;&amp; count &lt; 2) {
-      count += 1;
-      return streamBody(reader, test, count);
-    } else {
-      test.step(function() {
-        assert_true(count &gt;= 2, &quot;Retrieve body progressively&quot;);
-      });
-    }
-  });
-}
-
-//simulate streaming:
-//count is large enough to let the UA deliver the body before it is completely retrieved
-promise_test(function(test) {
-  return fetch(RESOURCES_DIR + &quot;trickle.py?ms=30&amp;count=100&quot;).then(function(resp) {
-    var count = 0;
-    if (resp.body)
-      return streamBody(resp.body.getReader(), test, count);
-    else
-      test.step(function() {
-        assert_unreached( &quot;Body does not exist in response&quot;);
-      });
-  });
-}, &quot;Stream response's body&quot;);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicstreamresponseworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapibasicw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,9 +15,7 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/accept-header.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/conditional-get.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/error-after-response.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/integrity-sharedworker.html
</span><span class="lines">@@ -27,44 +25,24 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors-worker.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/referrer.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-head.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-headers.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-redirected-worker.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-referrer.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/request-upload.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/response-url-worker.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/response-url.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/response-url.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-worker.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-worker.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/scheme-others.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/stream-response.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/basic/text-utf8.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,27 +0,0 @@
</span><del>-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load http://localhost:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://localhost:9443/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8801/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/fetch/api/resources/top.txt. Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-
-PASS Same domain different port [no-cors mode] 
-PASS Same domain different port [server forbid CORS] 
-PASS Same domain different port [cors mode] 
-PASS Same domain different protocol different port [no-cors mode] 
-PASS Same domain different protocol different port [server forbid CORS] 
-PASS Same domain different protocol different port [cors mode] 
-PASS Cross domain basic usage [no-cors mode] 
-PASS Cross domain basic usage [server forbid CORS] 
-PASS Cross domain basic usage [cors mode] 
-PASS Cross domain different port [no-cors mode] 
-PASS Cross domain different port [server forbid CORS] 
-PASS Cross domain different port [cors mode] 
-PASS Cross domain different protocol [no-cors mode] 
-PASS Cross domain different protocol [server forbid CORS] 
-PASS Cross domain different protocol [cors mode] 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,22 +0,0 @@
</span><del>-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-
-PASS Same domain different port [no-cors mode] 
-PASS Same domain different port [server forbid CORS] 
-PASS Same domain different port [cors mode] 
-PASS Same domain different protocol different port [no-cors mode] 
-PASS Same domain different protocol different port [server forbid CORS] 
-PASS Same domain different protocol different port [cors mode] 
-PASS Cross domain basic usage [no-cors mode] 
-PASS Cross domain basic usage [server forbid CORS] 
-PASS Cross domain basic usage [cors mode] 
-PASS Cross domain different port [no-cors mode] 
-PASS Cross domain different port [server forbid CORS] 
-PASS Cross domain different port [cors mode] 
-PASS Cross domain different protocol [no-cors mode] 
-PASS Cross domain different protocol [server forbid CORS] 
-PASS Cross domain different protocol [cors mode] 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: basic CORS&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#concept-filtered-response-cors&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#concept-cors-check&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-basic.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 31: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function cors(desc, origin) {
+  var url = origin + dirname(location.pathname);
+  var urlParameters = &quot;?pipe=header(Access-Control-Allow-Origin,*)&quot;;
+
+  promise_test(function(test) {
+    return fetch(url + RESOURCES_DIR + &quot;top.txt&quot; + urlParameters, {&quot;mode&quot;: &quot;no-cors&quot;} ).then(function(resp) {
+      assert_equals(resp.status, 0, &quot;Opaque filter: status is 0&quot;);
+      assert_equals(resp.statusText, &quot;&quot;, &quot;Opaque filter: statusText is \&quot;\&quot;&quot;);
+      assert_equals(resp.type , &quot;opaque&quot;, &quot;Opaque filter: response's type is opaque&quot;);
+      return resp.text().then(function(value) {
+        assert_equals(value, &quot;&quot;, &quot;Opaque response should have an empty body&quot;);
+      });
+    });
+  }, desc + &quot; [no-cors mode]&quot;);
+
+  promise_test(function(test) {
+    return promise_rejects(test, new TypeError(), fetch(url + RESOURCES_DIR + &quot;top.txt&quot;, {&quot;mode&quot;: &quot;cors&quot;}));
+  }, desc + &quot; [server forbid CORS]&quot;);
+
+  promise_test(function(test) {
+    return fetch(url + RESOURCES_DIR + &quot;top.txt&quot; + urlParameters, {&quot;mode&quot;: &quot;cors&quot;} ).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;Fetch's response's status is 200&quot;);
+      assert_equals(resp.type , &quot;cors&quot;, &quot;CORS response's type is cors&quot;);
+    });
+  }, desc + &quot; [cors mode]&quot;);
+}
+
+var host_info = get_host_info();
+
+cors(&quot;Same domain different port&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT);
+cors(&quot;Same domain different protocol different port&quot;, host_info.HTTPS_ORIGIN);
+cors(&quot;Cross domain basic usage&quot;, host_info.HTTP_REMOTE_ORIGIN);
+cors(&quot;Cross domain different port&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT);
+cors(&quot;Cross domain different protocol&quot;, host_info.HTTPS_REMOTE_ORIGIN);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasichtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch:  basic CORS&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#concept-filtered-response-cors&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#concept-cors-check&quot;&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-basic.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,42 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-}
-
-function cors(desc, origin) {
-  var url = origin + dirname(location.pathname);
-  var urlParameters = &quot;?pipe=header(Access-Control-Allow-Origin,*)&quot;;
-
-  promise_test(function(test) {
-    return fetch(url + RESOURCES_DIR + &quot;top.txt&quot; + urlParameters, {&quot;mode&quot;: &quot;no-cors&quot;} ).then(function(resp) {
-      assert_equals(resp.status, 0, &quot;Opaque filter: status is 0&quot;);
-      assert_equals(resp.statusText, &quot;&quot;, &quot;Opaque filter: statusText is \&quot;\&quot;&quot;);
-      assert_equals(resp.type , &quot;opaque&quot;, &quot;Opaque filter: response's type is opaque&quot;);
-      return resp.text().then(function(value) {
-        assert_equals(value, &quot;&quot;, &quot;Opaque response should have an empty body&quot;);
-      });
-    });
-  }, desc + &quot; [no-cors mode]&quot;);
-
-  promise_test(function(test) {
-    return promise_rejects(test, new TypeError(), fetch(url + RESOURCES_DIR + &quot;top.txt&quot;, {&quot;mode&quot;: &quot;cors&quot;}));
-  }, desc + &quot; [server forbid CORS]&quot;);
-
-  promise_test(function(test) {
-    return fetch(url + RESOURCES_DIR + &quot;top.txt&quot; + urlParameters, {&quot;mode&quot;: &quot;cors&quot;} ).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;Fetch's response's status is 200&quot;);
-      assert_equals(resp.type , &quot;cors&quot;, &quot;CORS response's type is cors&quot;);
-    });
-  }, desc + &quot; [cors mode]&quot;);
-}
-
-var host_info = get_host_info();
-
-cors(&quot;Same domain different port&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT);
-cors(&quot;Same domain different protocol different port&quot;, host_info.HTTPS_ORIGIN);
-cors(&quot;Cross domain basic usage&quot;, host_info.HTTP_REMOTE_ORIGIN);
-cors(&quot;Cross domain different port&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT);
-cors(&quot;Cross domain different protocol&quot;, host_info.HTTPS_REMOTE_ORIGIN);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsbasicworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,10 +0,0 @@
</span><del>-Blocked access to external URL http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&amp;headers=cookie
-CONSOLE MESSAGE: line 1: Fetch API cannot load http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&amp;headers=cookie due to access control checks.
-
-PASS Omit mode: no cookie sent 
-FAIL Include mode: 1 cookie assert_equals: Request includes cookie(s) expected (string) &quot;a=1&quot; but got (object) null
-PASS Include mode: local cookies are not sent with remote request 
-PASS Include mode: remote cookies are not sent with local request 
-PASS Same-origin mode: cookies are discarded in cors request 
-FAIL Include mode: remote cookies are not sent with other remote request promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,9 +0,0 @@
</span><del>-Blocked access to external URL http://www.localhost:8800/fetch/api/resources/inspect-headers.py?cors&amp;headers=cookie
-
-PASS Omit mode: no cookie sent 
-FAIL Include mode: 1 cookie assert_equals: Request includes cookie(s) expected (string) &quot;a=1&quot; but got (object) null
-PASS Include mode: local cookies are not sent with remote request 
-PASS Include mode: remote cookies are not sent with local request 
-PASS Same-origin mode: cookies are discarded in cors request 
-FAIL Include mode: remote cookies are not sent with other remote request promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: cookies management for cors requests&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-cookies.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 46: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsCookies(desc, baseURL1, baseURL2, credentialsMode, cookies) {
+  var urlSetCookie = baseURL1 + dirname(location.pathname) + RESOURCES_DIR + &quot;top.txt&quot;;
+  var urlCheckCookies = baseURL2 + dirname(location.pathname) + RESOURCES_DIR + &quot;inspect-headers.py?cors&amp;headers=cookie&quot;;
+  //enable cors with credentials
+  var urlParameters = &quot;?pipe=header(Access-Control-Allow-Origin,&quot; + location.origin + &quot;)&quot;;
+  urlParameters += &quot;|header(Access-Control-Allow-Credentials,true)&quot;;
+
+  var urlCleanParameters = &quot;?pipe=header(Access-Control-Allow-Origin,&quot; + location.origin + &quot;)&quot;;
+  urlCleanParameters += &quot;|header(Access-Control-Allow-Credentials,true)&quot;;
+  if (cookies) {
+    urlParameters += &quot;|header(Set-Cookie,&quot;;
+    urlParameters += cookies.join(&quot;,True)|header(Set-Cookie,&quot;) +  &quot;,True)&quot;;
+    urlCleanParameters += &quot;|header(Set-Cookie,&quot;;
+    urlCleanParameters +=  cookies.join(&quot;%3B%20max-age=0,True)|header(Set-Cookie,&quot;) +  &quot;%3B%20max-age=0,True)&quot;;
+  }
+
+  var requestInit = {&quot;credentials&quot;: credentialsMode, &quot;mode&quot;: &quot;cors&quot;};
+
+  promise_test(function(test){
+    return fetch(urlSetCookie + urlParameters, requestInit).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+      //check cookies sent
+      return fetch(urlCheckCookies, requestInit);
+    }).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
+      assert_false(resp.headers.has(&quot;Cookie&quot;) , &quot;Cookie header is not exposed in response&quot;);
+      if (credentialsMode === &quot;include&quot; &amp;&amp; baseURL1 === baseURL2) {
+        assert_equals(resp.headers.get(&quot;x-request-cookie&quot;) , cookies.join(&quot;; &quot;), &quot;Request includes cookie(s)&quot;);
+      }
+      else {
+        assert_false(resp.headers.has(&quot;x-request-cookie&quot;) , &quot;Request should have no cookie&quot;);
+      }
+      //clean cookies
+      return fetch(urlSetCookie + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;});
+    }).catch(function(e) {
+      return fetch(urlSetCookie + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;}).then(function(resp) {
+        throw e;
+      })
+    });
+  }, desc);
+}
+
+var local = get_host_info().HTTP_ORIGIN;
+var remote = get_host_info().HTTP_REMOTE_ORIGIN;
+// FIXME: otherRemote might not be accessible on some test environments.
+var otherRemote = local.replace(&quot;http://&quot;, &quot;http://www.&quot;);
+
+corsCookies(&quot;Omit mode: no cookie sent&quot;, local, local, &quot;omit&quot;, [&quot;g=7&quot;]);
+corsCookies(&quot;Include mode: 1 cookie&quot;, remote, remote, &quot;include&quot;, [&quot;a=1&quot;]);
+corsCookies(&quot;Include mode: local cookies are not sent with remote request&quot;, local, remote, &quot;include&quot;, [&quot;c=3&quot;]);
+corsCookies(&quot;Include mode: remote cookies are not sent with local request&quot;, remote, local, &quot;include&quot;, [&quot;d=4&quot;]);
+corsCookies(&quot;Same-origin mode: cookies are discarded in cors request&quot;, remote, remote, &quot;same-origin&quot;, [&quot;f=6&quot;]);
+corsCookies(&quot;Include mode: remote cookies are not sent with other remote request&quot;, remote, otherRemote, &quot;include&quot;, [&quot;e=5&quot;]);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookieshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: cookies management for cors requests&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-fetch&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-cookies.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,61 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;)
-}
-
-function corsCookies(desc, baseURL1, baseURL2, credentialsMode, cookies) {
-  var urlSetCookie = baseURL1 + dirname(location.pathname) + RESOURCES_DIR + &quot;top.txt&quot;;
-  var urlCheckCookies = baseURL2 + dirname(location.pathname) + RESOURCES_DIR + &quot;inspect-headers.py?cors&amp;headers=cookie&quot;;
-  //enable cors with credentials
-  var urlParameters = &quot;?pipe=header(Access-Control-Allow-Origin,&quot; + location.origin + &quot;)&quot;;
-  urlParameters += &quot;|header(Access-Control-Allow-Credentials,true)&quot;;
-
-  var urlCleanParameters = &quot;?pipe=header(Access-Control-Allow-Origin,&quot; + location.origin + &quot;)&quot;;
-  urlCleanParameters += &quot;|header(Access-Control-Allow-Credentials,true)&quot;;
-  if (cookies) {
-    urlParameters += &quot;|header(Set-Cookie,&quot;;
-    urlParameters += cookies.join(&quot;,True)|header(Set-Cookie,&quot;) +  &quot;,True)&quot;;
-    urlCleanParameters += &quot;|header(Set-Cookie,&quot;;
-    urlCleanParameters +=  cookies.join(&quot;%3B%20max-age=0,True)|header(Set-Cookie,&quot;) +  &quot;%3B%20max-age=0,True)&quot;;
-  }
-
-  var requestInit = {&quot;credentials&quot;: credentialsMode, &quot;mode&quot;: &quot;cors&quot;};
-
-  promise_test(function(test){
-    return fetch(urlSetCookie + urlParameters, requestInit).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
-      //check cookies sent
-      return fetch(urlCheckCookies, requestInit);
-    }).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;HTTP status is 200&quot;);
-      assert_false(resp.headers.has(&quot;Cookie&quot;) , &quot;Cookie header is not exposed in response&quot;);
-      if (credentialsMode === &quot;include&quot; &amp;&amp; baseURL1 === baseURL2) {
-        assert_equals(resp.headers.get(&quot;x-request-cookie&quot;) , cookies.join(&quot;; &quot;), &quot;Request includes cookie(s)&quot;);
-      }
-      else {
-        assert_false(resp.headers.has(&quot;x-request-cookie&quot;) , &quot;Request should have no cookie&quot;);
-      }
-      //clean cookies
-      return fetch(urlSetCookie + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;});
-    }).catch(function(e) {
-      return fetch(urlSetCookie + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;}).then(function(resp) {
-        throw e;
-      })
-    });
-  }, desc);
-}
-
-var local = get_host_info().HTTP_ORIGIN;
-var remote = get_host_info().HTTP_REMOTE_ORIGIN;
-// FIXME: otherRemote might not be accessible on some test environments.
-var otherRemote = local.replace(&quot;http://&quot;, &quot;http://www.&quot;);
-
-corsCookies(&quot;Omit mode: no cookie sent&quot;, local, local, &quot;omit&quot;, [&quot;g=7&quot;]);
-corsCookies(&quot;Include mode: 1 cookie&quot;, remote, remote, &quot;include&quot;, [&quot;a=1&quot;]);
-corsCookies(&quot;Include mode: local cookies are not sent with remote request&quot;, local, remote, &quot;include&quot;, [&quot;c=3&quot;]);
-corsCookies(&quot;Include mode: remote cookies are not sent with local request&quot;, remote, local, &quot;include&quot;, [&quot;d=4&quot;]);
-corsCookies(&quot;Same-origin mode: cookies are discarded in cors request&quot;, remote, remote, &quot;same-origin&quot;, [&quot;f=6&quot;]);
-corsCookies(&quot;Include mode: remote cookies are not sent with other remote request&quot;, remote, otherRemote, &quot;include&quot;, [&quot;e=5&quot;]);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorscookiesworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsfilteringexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,6 +15,8 @@
</span><span class="cx"> PASS CORS filter on Server header, header is exposed 
</span><span class="cx"> PASS CORS filter on Warning header, header is exposed 
</span><span class="cx"> PASS CORS filter on Content-Length header, header is exposed 
</span><del>-PASS CORS filter on Set-Cookie header, header is exposed 
-PASS CORS filter on Set-Cookie2 header, header is exposed 
</del><ins>+PASS CORS filter on Set-Cookie header, header is forbidden 
+PASS CORS filter on Set-Cookie2 header, header is forbidden 
+PASS CORS filter on Set-Cookie header, header is forbidden(credentials = include) 
+PASS CORS filter on Set-Cookie2 header, header is forbidden(credentials = include) 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsfilteringworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,6 +15,8 @@
</span><span class="cx"> PASS CORS filter on Server header, header is exposed 
</span><span class="cx"> PASS CORS filter on Warning header, header is exposed 
</span><span class="cx"> PASS CORS filter on Content-Length header, header is exposed 
</span><del>-PASS CORS filter on Set-Cookie header, header is exposed 
-PASS CORS filter on Set-Cookie2 header, header is exposed 
</del><ins>+PASS CORS filter on Set-Cookie header, header is forbidden 
+PASS CORS filter on Set-Cookie2 header, header is forbidden 
+PASS CORS filter on Set-Cookie header, header is forbidden(credentials = include) 
+PASS CORS filter on Set-Cookie2 header, header is forbidden(credentials = include) 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsfilteringjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-filtering.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -20,13 +20,17 @@
</span><span class="cx">   }, &quot;CORS filter on &quot; + headerName + &quot; header&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-function corsExposeFilter(corsUrl, headerName, headerValue, isForbidden) {
</del><ins>+function corsExposeFilter(corsUrl, headerName, headerValue, isForbidden, withCredentials) {
</ins><span class="cx">   var url = corsUrl + &quot;?pipe=header(&quot; + headerName + &quot;,&quot; + encodeURIComponent(headerValue) +&quot;)|&quot; +
</span><del>-                            &quot;header(Access-Control-Allow-Origin,*)&quot; +
</del><ins>+                            &quot;header(Access-Control-Allow-Origin, http://{{host}}:{{ports[http][0]}})&quot; +
+                            &quot;header(Access-Control-Allow-Credentials, true)&quot; +
</ins><span class="cx">                             &quot;header(Access-Control-Expose-Headers,&quot; + headerName + &quot;)&quot;;
</span><span class="cx"> 
</span><ins>+  var title = &quot;CORS filter on &quot; + headerName + &quot; header, header is &quot; + (isForbidden ? &quot;forbidden&quot; : &quot;exposed&quot;);
+  if (withCredentials)
+      title+= &quot;(credentials = include)&quot;;
</ins><span class="cx">   promise_test(function(test) {
</span><del>-    return fetch(url).then(function(resp) {
</del><ins>+    return fetch(new Request(url, { credentials: withCredentials ? &quot;include&quot; : &quot;omit&quot; })).then(function(resp) {
</ins><span class="cx">       assert_equals(resp.status, 200, &quot;Fetch success with code 200&quot;);
</span><span class="cx">       assert_equals(resp.type , &quot;cors&quot;, &quot;CORS fetch's response has cors type&quot;);
</span><span class="cx">       if (!isForbidden) {
</span><span class="lines">@@ -37,7 +41,7 @@
</span><span class="cx">       }
</span><span class="cx">       test.done();
</span><span class="cx">     });
</span><del>-  }, &quot;CORS filter on &quot; + headerName + &quot; header, header is exposed&quot;);
</del><ins>+  }, title);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> var url = &quot;http://{{host}}:{{ports[http][1]}}&quot; + dirname(location.pathname) + RESOURCES_DIR + &quot;top.txt&quot;;
</span><span class="lines">@@ -60,7 +64,10 @@
</span><span class="cx"> corsExposeFilter(url, &quot;Server&quot;, &quot;wptServe&quot; , false);
</span><span class="cx"> corsExposeFilter(url, &quot;Warning&quot;, &quot;Mind the gap&quot; , false);
</span><span class="cx"> corsExposeFilter(url, &quot;Content-Length&quot;, &quot;0&quot; , false);
</span><ins>+
</ins><span class="cx"> corsExposeFilter(url, &quot;Set-Cookie&quot;, &quot;name=value&quot; , true);
</span><span class="cx"> corsExposeFilter(url, &quot;Set-Cookie2&quot;, &quot;name=value&quot; , true);
</span><ins>+corsExposeFilter(url, &quot;Set-Cookie&quot;, &quot;name=value&quot; , true, true);
+corsExposeFilter(url, &quot;Set-Cookie2&quot;, &quot;name=value&quot; , true, true);
</ins><span class="cx"> 
</span><span class="cx"> done();
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-
-PASS Cross domain basic usage [GET] 
-PASS Same domain different port [GET] 
-PASS Cross domain different port [GET] 
-PASS Cross domain different protocol [GET] 
-PASS Same domain different protocol different port [GET] 
-PASS Cross domain [POST] 
-PASS Cross domain [HEAD] 
-PASS Cross domain [GET] [Accept: */*] 
-PASS Cross domain [GET] [Accept-Language: fr] 
-PASS Cross domain [GET] [Content-Language: fr] 
-PASS Cross domain [GET] [Content-Type: application/x-www-form-urlencoded] 
-PASS Cross domain [GET] [Content-Type: multipart/form-data] 
-PASS Cross domain [GET] [Content-Type: text/plain] 
-PASS Cross domain [GET] [Content-Type: text/plain;charset=utf-8] 
-PASS Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8] 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-
-PASS Cross domain basic usage [GET] 
-PASS Same domain different port [GET] 
-PASS Cross domain different port [GET] 
-PASS Cross domain different protocol [GET] 
-PASS Same domain different protocol different port [GET] 
-PASS Cross domain [POST] 
-PASS Cross domain [HEAD] 
-PASS Cross domain [GET] [Accept: */*] 
-PASS Cross domain [GET] [Accept-Language: fr] 
-PASS Cross domain [GET] [Content-Language: fr] 
-PASS Cross domain [GET] [Content-Type: application/x-www-form-urlencoded] 
-PASS Cross domain [GET] [Content-Type: multipart/form-data] 
-PASS Cross domain [GET] [Content-Type: text/plain] 
-PASS Cross domain [GET] [Content-Type: text/plain;charset=utf-8] 
-PASS Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8] 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: CORS request with simple methods and headers&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-method&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-header&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-no-preflight.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsNoPreflight(desc, baseURL, method, headerName, headerValue) {
+
+  var uuid_token = token();
+  var url = baseURL + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;method&quot;: method, &quot;headers&quot;:{}};
+  if (headerName)
+    requestInit[&quot;headers&quot;][headerName] = headerValue;
+
+  promise_test(function(test) {
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
+      return fetch(url + urlParameters, requestInit).then(function(resp) {
+        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;0&quot;, &quot;No preflight request has been made&quot;);
+      });
+    });
+  }, desc);
+}
+
+var host_info = get_host_info();
+
+corsNoPreflight(&quot;Cross domain basic usage [GET]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;);
+corsNoPreflight(&quot;Same domain different port [GET]&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;);
+corsNoPreflight(&quot;Cross domain different port [GET]&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;);
+corsNoPreflight(&quot;Cross domain different protocol [GET]&quot;, host_info.HTTPS_REMOTE_ORIGIN, &quot;GET&quot;);
+corsNoPreflight(&quot;Same domain different protocol different port [GET]&quot;, host_info.HTTPS_ORIGIN, &quot;GET&quot;);
+corsNoPreflight(&quot;Cross domain [POST]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;POST&quot;);
+corsNoPreflight(&quot;Cross domain [HEAD]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;HEAD&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Accept: */*]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Accept&quot;, &quot;*/*&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Accept-Language: fr]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Accept-Language&quot;, &quot;fr&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Content-Language: fr]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Language&quot;, &quot;fr&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Content-Type: application/x-www-form-urlencoded]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Content-Type: multipart/form-data]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;multipart/form-data&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Content-Type: text/plain]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;text/plain&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Content-Type: text/plain;charset=utf-8]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;text/plain;charset=utf-8&quot;);
+corsNoPreflight(&quot;Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;Text/Plain;charset=utf-8&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflighthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: CORS request with simple methods and headers&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-method&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-header&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-no-preflight.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,46 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;)
-}
-
-function corsNoPreflight(desc, baseURL, method, headerName, headerValue) {
-
-  var uuid_token = token();
-  var url = baseURL + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;method&quot;: method, &quot;headers&quot;:{}};
-  if (headerName)
-    requestInit[&quot;headers&quot;][headerName] = headerValue;
-
-  promise_test(function(test) {
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
-      return fetch(url + urlParameters, requestInit).then(function(resp) {
-        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;0&quot;, &quot;No preflight request has been made&quot;);
-      });
-    });
-  }, desc);
-}
-
-var host_info = get_host_info();
-
-corsNoPreflight(&quot;Cross domain basic usage [GET]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;);
-corsNoPreflight(&quot;Same domain different port [GET]&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;);
-corsNoPreflight(&quot;Cross domain different port [GET]&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;);
-corsNoPreflight(&quot;Cross domain different protocol [GET]&quot;, host_info.HTTPS_REMOTE_ORIGIN, &quot;GET&quot;);
-corsNoPreflight(&quot;Same domain different protocol different port [GET]&quot;, host_info.HTTPS_ORIGIN, &quot;GET&quot;);
-corsNoPreflight(&quot;Cross domain [POST]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;POST&quot;);
-corsNoPreflight(&quot;Cross domain [HEAD]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;HEAD&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Accept: */*]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Accept&quot;, &quot;*/*&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Accept-Language: fr]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Accept-Language&quot;, &quot;fr&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Content-Language: fr]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Language&quot;, &quot;fr&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Content-Type: application/x-www-form-urlencoded]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Content-Type: multipart/form-data]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;multipart/form-data&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Content-Type: text/plain]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;text/plain&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Content-Type: text/plain;charset=utf-8]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;text/plain;charset=utf-8&quot;);
-corsNoPreflight(&quot;Cross domain [GET] [Content-Type: Text/Plain;charset=utf-8]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot; , &quot;Content-Type&quot;, &quot;Text/Plain;charset=utf-8&quot;);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsnopreflightworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-
-PASS Cross domain different subdomain [origin OK] 
-PASS Cross domain different subdomain [origin KO] 
-PASS Same domain different port [origin OK] 
-PASS Same domain different port [origin KO] 
-PASS Cross domain different port [origin OK] 
-PASS Cross domain different port [origin KO] 
-PASS Cross domain different protocol [origin OK] 
-PASS Cross domain different protocol [origin KO] 
-PASS Same domain different protocol different port [origin OK] 
-PASS Same domain different protocol different port [origin KO] 
-PASS Cross domain [POST] [origin OK] 
-PASS Cross domain [POST] [origin KO] 
-PASS Cross domain [HEAD] [origin OK] 
-PASS Cross domain [HEAD] [origin KO] 
-PASS CORS preflight [PUT] [origin OK] 
-PASS CORS preflight [PUT] [origin KO] 
-PASS Allowed origin: &quot;&quot; [origin KO] 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,27 +0,0 @@
</span><del>-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin http://localhost:8800 is not allowed by Access-Control-Allow-Origin.
-
-PASS Cross domain different subdomain [origin OK] 
-PASS Cross domain different subdomain [origin KO] 
-PASS Same domain different port [origin OK] 
-PASS Same domain different port [origin KO] 
-PASS Cross domain different port [origin OK] 
-PASS Cross domain different port [origin KO] 
-PASS Cross domain different protocol [origin OK] 
-PASS Cross domain different protocol [origin KO] 
-PASS Same domain different protocol different port [origin OK] 
-PASS Same domain different protocol different port [origin KO] 
-PASS Cross domain [POST] [origin OK] 
-PASS Cross domain [POST] [origin KO] 
-PASS Cross domain [HEAD] [origin OK] 
-PASS Cross domain [HEAD] [origin KO] 
-PASS CORS preflight [PUT] [origin OK] 
-PASS CORS preflight [PUT] [origin KO] 
-PASS Allowed origin: &quot;&quot; [origin KO] 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: check Access-Control-Allow-Origin header management&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#cors-check&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-origin.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 30: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+/* If origin is undefined, it is set to fetched url's origin*/
+function corsOrigin(desc, baseURL, method, origin, shouldPass) {
+  if (!origin)
+    origin = baseURL;
+
+  var uuid_token = token();
+  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&amp;origin=&quot; + encodeURIComponent(origin) + &quot;&amp;allow_methods=&quot; + method;
+  var url = baseURL + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;method&quot;: method};
+
+  promise_test(function(test) {
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
+      if (shouldPass) {
+        return fetch(url + urlParameters, requestInit).then(function(resp) {
+          assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+        });
+      } else {
+        return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
+      }
+    });
+  }, desc);
+
+}
+
+var host_info = get_host_info();
+
+/* Actual origin */
+var origin = host_info.HTTP_ORIGIN;
+
+corsOrigin(&quot;Cross domain different subdomain [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;, origin, true);
+corsOrigin(&quot;Cross domain different subdomain [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;, undefined, false);
+corsOrigin(&quot;Same domain different port [origin OK]&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, origin, true);
+corsOrigin(&quot;Same domain different port [origin KO]&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, undefined, false);
+corsOrigin(&quot;Cross domain different port [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, origin, true);
+corsOrigin(&quot;Cross domain different port [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, undefined, false);
+corsOrigin(&quot;Cross domain different protocol [origin OK]&quot;, host_info.HTTPS_REMOTE_ORIGIN, &quot;GET&quot;, origin, true);
+corsOrigin(&quot;Cross domain different protocol [origin KO]&quot;, host_info.HTTPS_REMOTE_ORIGIN, &quot;GET&quot;, undefined, false);
+corsOrigin(&quot;Same domain different protocol different port [origin OK]&quot;, host_info.HTTPS_ORIGIN, &quot;GET&quot;, origin, true);
+corsOrigin(&quot;Same domain different protocol different port [origin KO]&quot;, host_info.HTTPS_ORIGIN, &quot;GET&quot;, undefined, false);
+corsOrigin(&quot;Cross domain [POST] [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;POST&quot;, origin, true);
+corsOrigin(&quot;Cross domain [POST] [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;POST&quot;, undefined, false);
+corsOrigin(&quot;Cross domain [HEAD] [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;HEAD&quot;, origin, true);
+corsOrigin(&quot;Cross domain [HEAD] [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;HEAD&quot;, undefined, false);
+corsOrigin(&quot;CORS preflight [PUT] [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;PUT&quot;, origin, true);
+corsOrigin(&quot;CORS preflight [PUT] [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;PUT&quot;, undefined, false);
+corsOrigin(&quot;Allowed origin: \&quot;\&quot; [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;, &quot;&quot; , false);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: check Access-Control-Allow-Origin header management&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#cors-check&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-origin.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,56 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;)
-}
-
-/* If origin is undefined, it is set to fetched url's origin*/
-function corsOrigin(desc, baseURL, method, origin, shouldPass) {
-  if (!origin)
-    origin = baseURL;
-
-  var uuid_token = token();
-  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&amp;origin=&quot; + encodeURIComponent(origin) + &quot;&amp;allow_methods=&quot; + method;
-  var url = baseURL + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;method&quot;: method};
-
-  promise_test(function(test) {
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
-      if (shouldPass) {
-        return fetch(url + urlParameters, requestInit).then(function(resp) {
-          assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-        });
-      } else {
-        return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
-      }
-    });
-  }, desc);
-
-}
-
-var host_info = get_host_info();
-
-/* Actual origin */
-var origin = host_info.HTTP_ORIGIN;
-
-corsOrigin(&quot;Cross domain different subdomain [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;, origin, true);
-corsOrigin(&quot;Cross domain different subdomain [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;, undefined, false);
-corsOrigin(&quot;Same domain different port [origin OK]&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, origin, true);
-corsOrigin(&quot;Same domain different port [origin KO]&quot;, host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, undefined, false);
-corsOrigin(&quot;Cross domain different port [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, origin, true);
-corsOrigin(&quot;Cross domain different port [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN_WITH_DIFFERENT_PORT, &quot;GET&quot;, undefined, false);
-corsOrigin(&quot;Cross domain different protocol [origin OK]&quot;, host_info.HTTPS_REMOTE_ORIGIN, &quot;GET&quot;, origin, true);
-corsOrigin(&quot;Cross domain different protocol [origin KO]&quot;, host_info.HTTPS_REMOTE_ORIGIN, &quot;GET&quot;, undefined, false);
-corsOrigin(&quot;Same domain different protocol different port [origin OK]&quot;, host_info.HTTPS_ORIGIN, &quot;GET&quot;, origin, true);
-corsOrigin(&quot;Same domain different protocol different port [origin KO]&quot;, host_info.HTTPS_ORIGIN, &quot;GET&quot;, undefined, false);
-corsOrigin(&quot;Cross domain [POST] [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;POST&quot;, origin, true);
-corsOrigin(&quot;Cross domain [POST] [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;POST&quot;, undefined, false);
-corsOrigin(&quot;Cross domain [HEAD] [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;HEAD&quot;, origin, true);
-corsOrigin(&quot;Cross domain [HEAD] [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;HEAD&quot;, undefined, false);
-corsOrigin(&quot;CORS preflight [PUT] [origin OK]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;PUT&quot;, origin, true);
-corsOrigin(&quot;CORS preflight [PUT] [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;PUT&quot;, undefined, false);
-corsOrigin(&quot;Allowed origin: \&quot;\&quot; [origin KO]&quot;, host_info.HTTP_REMOTE_ORIGIN, &quot;GET&quot;, &quot;&quot; , false);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsoriginworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-
-PASS CORS [DELETE], server allows 
-PASS CORS [DELETE], server refuses 
-PASS CORS [PUT], server allows 
-PASS CORS [PUT], server refuses 
-PASS CORS [PATCH], server allows 
-PASS CORS [PATCH], server refuses 
-PASS CORS [NEW], server allows 
-PASS CORS [NEW], server refuses 
-PASS CORS [GET] [x-test-header: allowed], server allows 
-PASS CORS [GET] [x-test-header: refused], server refuses 
-PASS CORS [GET] [several headers], server allows 
-PASS CORS [GET] [several headers], server refuses 
-PASS CORS [PUT] [several headers], server allows 
-PASS CORS [PUT] [several headers], server refuses 
-PASS CORS [PUT] [only safe headers], server allows 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-
-FAIL Redirection 301 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 301 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 after preflight failed assert_not_equals: got disallowed value undefined
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-
-FAIL Redirection 301 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 301 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 302 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 303 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 307 after preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 on preflight failed assert_not_equals: got disallowed value undefined
-FAIL Redirection 308 after preflight failed assert_not_equals: got disallowed value undefined
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: redirection handling for cors with preflight&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-preflight-redirect.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 28: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsPreflightRedirect(desc, redirectUrl, redirectLocation, redirectStatus, redirectPreflight) {
+  var uuid_token = token();
+  var url = redirectUrl;
+  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
+  urlParameters += &quot;&amp;redirect_status=&quot; + redirectStatus;
+  urlParameters += &quot;&amp;location=&quot; + encodeURIComponent(redirectLocation);
+
+  if (redirectPreflight)
+    urlParameters += &quot;&amp;redirect_preflight&quot;;
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;};
+
+  /* Force preflight */
+  requestInit[&quot;headers&quot;] = {&quot;x-force-preflight&quot;: &quot;&quot;};
+  urlParameters += &quot;&amp;allow_headers=x-force-preflight&quot;;
+
+  promise_test(function(test) {
+    fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
+      return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
+    });
+  }, desc);
+}
+
+var redirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
+var locationUrl =  get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+
+for (var code of [301, 302, 303, 307, 308]) {
+  /* preflight should not follow the redirection */
+  corsPreflightRedirect(&quot;Redirection &quot; + code + &quot; on preflight failed&quot;, redirectUrl, locationUrl, code, true);
+  /* preflight is done before redirection: preflight force redirect to error */
+  corsPreflightRedirect(&quot;Redirection &quot; + code + &quot; after preflight failed&quot;, redirectUrl, locationUrl, code, false);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirecthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: redirection handling for cors with preflight&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-preflight-redirect.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,41 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-}
-
-function corsPreflightRedirect(desc, redirectUrl, redirectLocation, redirectStatus, redirectPreflight) {
-  var uuid_token = token();
-  var url = redirectUrl;
-  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
-  urlParameters += &quot;&amp;redirect_status=&quot; + redirectStatus;
-  urlParameters += &quot;&amp;location=&quot; + encodeURIComponent(redirectLocation);
-
-  if (redirectPreflight)
-    urlParameters += &quot;&amp;redirect_preflight&quot;;
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;};
-
-  /* Force preflight */
-  requestInit[&quot;headers&quot;] = {&quot;x-force-preflight&quot;: &quot;&quot;};
-  urlParameters += &quot;&amp;allow_headers=x-force-preflight&quot;;
-
-  promise_test(function(test) {
-    fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
-      return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
-    });
-  }, desc);
-}
-
-var redirectUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
-var locationUrl =  get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-
-for (var code of [301, 302, 303, 307, 308]) {
-  /* preflight should not follow the redirection */
-  corsPreflightRedirect(&quot;Redirection &quot; + code + &quot; on preflight failed&quot;, redirectUrl, locationUrl, code, true);
-  /* preflight is done before redirection: preflight force redirect to error */
-  corsPreflightRedirect(&quot;Redirection &quot; + code + &quot; after preflight failed&quot;, redirectUrl, locationUrl, code, false);
-}
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightredirectworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-
-PASS Referrer policy: no-referrer and referrer: default 
-PASS Referrer policy: no-referrer and referrer: 'myreferrer' 
-PASS Referrer policy: &quot;&quot; and referrer: default 
-PASS Referrer policy: &quot;&quot; and referrer: 'myreferrer' 
-PASS Referrer policy: origin and referrer: default 
-PASS Referrer policy: origin and referrer: 'myreferrer' 
-PASS Referrer policy: origin-when-cross-origin and referrer: default 
-PASS Referrer policy: origin-when-cross-origin and referrer: 'myreferrer' 
-PASS Referrer policy: unsafe-url and referrer: default 
-PASS Referrer policy: unsafe-url and referrer: 'myreferrer' 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-
-PASS Referrer policy: no-referrer and referrer: default 
-PASS Referrer policy: no-referrer and referrer: 'myreferrer' 
-PASS Referrer policy: &quot;&quot; and referrer: default 
-PASS Referrer policy: &quot;&quot; and referrer: 'myreferrer' 
-PASS Referrer policy: origin and referrer: default 
-PASS Referrer policy: origin and referrer: 'myreferrer' 
-PASS Referrer policy: origin-when-cross-origin and referrer: default 
-PASS Referrer policy: origin-when-cross-origin and referrer: 'myreferrer' 
-PASS Referrer policy: unsafe-url and referrer: default 
-PASS Referrer policy: unsafe-url and referrer: 'myreferrer' 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: Referer header management in CORS request with preflight&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#cors-preflight-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-preflight-referrer.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferreranyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 32: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferreranyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferreranyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsPreflightReferrer(desc, corsUrl, referrerPolicy, referrer, expectedReferrer) {
+  var uuid_token = token();
+  var url = corsUrl;
+  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;referrerPolicy&quot;: referrerPolicy};
+
+  if (referrer)
+      requestInit.referrer = referrer;
+
+  /* Force preflight */
+  requestInit[&quot;headers&quot;] = {&quot;x-force-preflight&quot;: &quot;&quot;};
+  urlParameters += &quot;&amp;allow_headers=x-force-preflight&quot;;
+
+  promise_test(function(test) {
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
+      return fetch(url + urlParameters, requestInit).then(function(resp) {
+        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
+        assert_equals(resp.headers.get(&quot;x-preflight-referrer&quot;), expectedReferrer, &quot;Preflight's referrer is correct&quot;);
+        assert_equals(resp.headers.get(&quot;x-referrer&quot;), expectedReferrer, &quot;Request's referrer is correct&quot;);
+        assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), &quot;&quot;, &quot;Access-Control-Allow-Headers value&quot;);
+      });
+    });
+  }, desc + &quot; and referrer: &quot; + (referrer ? &quot;'&quot; + referrer + &quot;'&quot; : &quot;default&quot;));
+}
+
+var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN  + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+var origin = get_host_info().HTTP_ORIGIN + &quot;/&quot;;
+
+corsPreflightReferrer(&quot;Referrer policy: no-referrer&quot;, corsUrl, &quot;no-referrer&quot;, undefined, &quot;&quot;);
+corsPreflightReferrer(&quot;Referrer policy: no-referrer&quot;, corsUrl, &quot;no-referrer&quot;, &quot;myreferrer&quot;, &quot;&quot;);
+
+corsPreflightReferrer(&quot;Referrer policy: \&quot;\&quot;&quot;, corsUrl, &quot;&quot;, undefined, location.toString())
+corsPreflightReferrer(&quot;Referrer policy: \&quot;\&quot;&quot;, corsUrl, &quot;&quot;, &quot;myreferrer&quot;, new URL(&quot;myreferrer&quot;, location).toString());
+
+corsPreflightReferrer(&quot;Referrer policy: origin&quot;, corsUrl, &quot;origin&quot;, undefined, origin);
+corsPreflightReferrer(&quot;Referrer policy: origin&quot;, corsUrl, &quot;origin&quot;, &quot;myreferrer&quot;, origin);
+
+corsPreflightReferrer(&quot;Referrer policy: origin-when-cross-origin&quot;, corsUrl, &quot;origin-when-cross-origin&quot;, undefined, origin);
+corsPreflightReferrer(&quot;Referrer policy: origin-when-cross-origin&quot;, corsUrl, &quot;origin-when-cross-origin&quot;, &quot;myreferrer&quot;, origin);
+
+corsPreflightReferrer(&quot;Referrer policy: unsafe-url&quot;, corsUrl, &quot;unsafe-url&quot;, undefined, location.toString());
+corsPreflightReferrer(&quot;Referrer policy: unsafe-url&quot;, corsUrl, &quot;unsafe-url&quot;, &quot;myreferrer&quot;, new URL(&quot;myreferrer&quot;, location).toString());
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,19 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: Referer header management in CORS request with preflight&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#cors-preflight-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-preflight-referrer.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,53 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function corsPreflightReferrer(desc, corsUrl, referrerPolicy, referrer, expectedReferrer) {
-  var uuid_token = token();
-  var url = corsUrl;
-  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;referrerPolicy&quot;: referrerPolicy};
-
-  if (referrer)
-      requestInit.referrer = referrer;
-
-  /* Force preflight */
-  requestInit[&quot;headers&quot;] = {&quot;x-force-preflight&quot;: &quot;&quot;};
-  urlParameters += &quot;&amp;allow_headers=x-force-preflight&quot;;
-
-  promise_test(function(test) {
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
-      return fetch(url + urlParameters, requestInit).then(function(resp) {
-        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
-        assert_equals(resp.headers.get(&quot;x-preflight-referrer&quot;), expectedReferrer, &quot;Preflight's referrer is correct&quot;);
-        assert_equals(resp.headers.get(&quot;x-referrer&quot;), expectedReferrer, &quot;Request's referrer is correct&quot;);
-        assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), &quot;&quot;, &quot;Access-Control-Allow-Headers value&quot;);
-      });
-    });
-  }, desc + &quot; and referrer: &quot; + (referrer ? &quot;'&quot; + referrer + &quot;'&quot; : &quot;default&quot;));
-}
-
-var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN  + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-var origin = get_host_info().HTTP_ORIGIN + &quot;/&quot;;
-
-corsPreflightReferrer(&quot;Referrer policy: no-referrer&quot;, corsUrl, &quot;no-referrer&quot;, undefined, &quot;&quot;);
-corsPreflightReferrer(&quot;Referrer policy: no-referrer&quot;, corsUrl, &quot;no-referrer&quot;, &quot;myreferrer&quot;, &quot;&quot;);
-
-corsPreflightReferrer(&quot;Referrer policy: \&quot;\&quot;&quot;, corsUrl, &quot;&quot;, undefined, location.toString())
-corsPreflightReferrer(&quot;Referrer policy: \&quot;\&quot;&quot;, corsUrl, &quot;&quot;, &quot;myreferrer&quot;, new URL(&quot;myreferrer&quot;, location).toString());
-
-corsPreflightReferrer(&quot;Referrer policy: origin&quot;, corsUrl, &quot;origin&quot;, undefined, origin);
-corsPreflightReferrer(&quot;Referrer policy: origin&quot;, corsUrl, &quot;origin&quot;, &quot;myreferrer&quot;, origin);
-
-corsPreflightReferrer(&quot;Referrer policy: origin-when-cross-origin&quot;, corsUrl, &quot;origin-when-cross-origin&quot;, undefined, origin);
-corsPreflightReferrer(&quot;Referrer policy: origin-when-cross-origin&quot;, corsUrl, &quot;origin-when-cross-origin&quot;, &quot;myreferrer&quot;, origin);
-
-corsPreflightReferrer(&quot;Referrer policy: unsafe-url&quot;, corsUrl, &quot;unsafe-url&quot;, undefined, location.toString());
-corsPreflightReferrer(&quot;Referrer policy: unsafe-url&quot;, corsUrl, &quot;unsafe-url&quot;, &quot;myreferrer&quot;, new URL(&quot;myreferrer&quot;, location).toString());
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightreferrerworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,11 +0,0 @@
</span><del>-CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/preflight.py?allow_methods=*&amp;allow_headers=x-test&amp;. Method SUPER is not allowed by Access-Control-Allow-Methods.
-CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/preflight.py?allow_methods=*&amp;allow_headers=*&amp;. Method OK is not allowed by Access-Control-Allow-Methods.
-CONSOLE MESSAGE: Fetch API cannot load http://127.0.0.1:8800/fetch/api/resources/preflight.py?origin=http://localhost:8800&amp;credentials&amp;allow_methods=*&amp;allow_headers=*&amp;. Method OK is not allowed by Access-Control-Allow-Methods.
-
-PASS CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test) 
-FAIL CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *) 
-FAIL CORS that fails with credentials: true; method: GET (allowed: *); header: undefined (allowed: ) assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL CORS that fails with credentials: true; method: GET (allowed: *); header: undefined (allowed: *) assert_unreached: Should have rejected: undefined Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-
-PASS CORS that succeeds with credentials: false; method: GET (allowed: get); header: X-Test,1 (allowed: x-test) 
-FAIL CORS that succeeds with credentials: false; method: SUPER (allowed: *); header: X-Test,1 (allowed: x-test) promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL CORS that succeeds with credentials: false; method: OK (allowed: *); header: X-Test,1 (allowed: *) promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS CORS that fails with credentials: true; method: OK (allowed: *); header: X-Test,1 (allowed: *) 
-FAIL CORS that fails with credentials: true; method: GET (allowed: *); header: undefined (allowed: ) assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL CORS that fails with credentials: true; method: GET (allowed: *); header: undefined (allowed: *) assert_unreached: Should have rejected: undefined Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: CORS preflight with headers using *&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;/head&gt;
-  &lt;body&gt;
-    &lt;script&gt;
-      fetch_tests_from_worker(new Worker(&quot;cors-preflight-star.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstaranyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 4: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstaranyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstaranyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+const url = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;,
+      origin = location.origin // assuming an ASCII origin
+
+function preflightTest(succeeds, withCredentials, allowMethod, allowHeader, useMethod, useHeader) {
+  return promise_test(t =&gt; {
+    let testURL = url + &quot;?&quot;,
+        requestInit = {}
+    if (withCredentials) {
+      testURL += &quot;origin=&quot; + origin + &quot;&amp;&quot;
+      testURL += &quot;credentials&amp;&quot;
+      requestInit.credentials = &quot;include&quot;
+    }
+    if (useMethod) {
+      requestInit.method = useMethod
+    }
+    if (useHeader) {
+      requestInit.headers = [useHeader]
+    }
+    testURL += &quot;allow_methods=&quot; + allowMethod + &quot;&amp;&quot;
+    testURL += &quot;allow_headers=&quot; + allowHeader + &quot;&amp;&quot;
+
+    if (succeeds) {
+      return fetch(testURL, requestInit).then(resp =&gt; {
+        assert_equals(resp.headers.get(&quot;x-origin&quot;), origin)
+      })
+    } else {
+      return promise_rejects(t, new TypeError(), fetch(testURL, requestInit))
+    }
+  }, &quot;CORS that &quot; + (succeeds ? &quot;succeeds&quot; : &quot;fails&quot;) + &quot; with credentials: &quot; + withCredentials + &quot;; method: &quot; + useMethod + &quot; (allowed: &quot; + allowMethod + &quot;); header: &quot; + useHeader + &quot; (allowed: &quot; + allowHeader + &quot;)&quot;)
+}
+
+preflightTest(true, false, &quot;get&quot;, &quot;x-test&quot;, &quot;GET&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
+preflightTest(true, false, &quot;*&quot;, &quot;x-test&quot;, &quot;SUPER&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
+preflightTest(true, false, &quot;*&quot;, &quot;*&quot;, &quot;OK&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
+preflightTest(false, true, &quot;*&quot;, &quot;*&quot;, &quot;OK&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
+preflightTest(false, true, &quot;*&quot;, &quot;&quot;, &quot;PUT&quot;, undefined)
+preflightTest(false, true, &quot;put&quot;, &quot;*&quot;, &quot;PUT&quot;, undefined)
+preflightTest(false, true, &quot;get&quot;, &quot;*&quot;, &quot;GET&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
+preflightTest(false, true, &quot;*&quot;, &quot;*&quot;, &quot;GET&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,14 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: CORS preflight with headers using *&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;/head&gt;
-  &lt;body&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-preflight-star.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,45 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-}
-
-const url = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;,
-      origin = location.origin // assuming an ASCII origin
-
-function preflightTest(succeeds, withCredentials, allowMethod, allowHeader, useMethod, useHeader) {
-  return promise_test(t =&gt; {
-    let testURL = url + &quot;?&quot;,
-        requestInit = {}
-    if (withCredentials) {
-      testURL += &quot;origin=&quot; + origin + &quot;&amp;&quot;
-      testURL += &quot;credentials&amp;&quot;
-      requestInit.credentials = &quot;include&quot;
-    }
-    if (useMethod) {
-      requestInit.method = useMethod
-    }
-    if (useHeader) {
-      requestInit.headers = [useHeader]
-    }
-    testURL += &quot;allow_methods=&quot; + allowMethod + &quot;&amp;&quot;
-    testURL += &quot;allow_headers=&quot; + allowHeader + &quot;&amp;&quot;
-
-    if (succeeds) {
-      return fetch(testURL, requestInit).then(resp =&gt; {
-        assert_equals(resp.headers.get(&quot;x-origin&quot;), origin)
-      })
-    } else {
-      return promise_rejects(t, new TypeError(), fetch(testURL, requestInit))
-    }
-  }, &quot;CORS that &quot; + (succeeds ? &quot;succeeds&quot; : &quot;fails&quot;) + &quot; with credentials: &quot; + withCredentials + &quot;; method: &quot; + useMethod + &quot; (allowed: &quot; + allowMethod + &quot;); header: &quot; + useHeader + &quot; (allowed: &quot; + allowHeader + &quot;)&quot;)
-}
-
-preflightTest(true, false, &quot;get&quot;, &quot;x-test&quot;, &quot;GET&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
-preflightTest(true, false, &quot;*&quot;, &quot;x-test&quot;, &quot;SUPER&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
-preflightTest(true, false, &quot;*&quot;, &quot;*&quot;, &quot;OK&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
-preflightTest(false, true, &quot;*&quot;, &quot;*&quot;, &quot;OK&quot;, [&quot;X-Test&quot;, &quot;1&quot;])
-preflightTest(false, true, &quot;*&quot;, &quot;&quot;, &quot;GET&quot;, undefined)
-preflightTest(false, true, &quot;*&quot;, &quot;*&quot;, &quot;GET&quot;, undefined)
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstarworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,29 +0,0 @@
</span><del>-
-FAIL Preflight answered with status 200 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 201 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 202 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 203 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 204 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 205 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 206 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 300 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 301 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 302 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 303 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 304 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 305 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 306 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 307 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 308 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 400 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 401 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 402 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 403 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 404 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 405 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 501 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 502 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 503 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 504 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 505 assert_not_equals: got disallowed value undefined
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,29 +0,0 @@
</span><del>-
-FAIL Preflight answered with status 200 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 201 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 202 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 203 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 204 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 205 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 206 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 300 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 301 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 302 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 303 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 304 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 305 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 306 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 307 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 308 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 400 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 401 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 402 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 403 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 404 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 405 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 501 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 502 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 503 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 504 assert_not_equals: got disallowed value undefined
-FAIL Preflight answered with status 505 assert_not_equals: got disallowed value undefined
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: preflight status code handling&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#cors-preflight-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-preflight-status.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 32: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+/* Check preflight is ok if status is ok status (200  to 299)*/
+function corsPreflightStatus(desc, corsUrl, preflightStatus) {
+  var uuid_token = token();
+  var url = corsUrl;
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;};
+  /* Force preflight */
+  requestInit[&quot;headers&quot;] = {&quot;x-force-preflight&quot;: &quot;&quot;};
+
+  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
+  urlParameters += &quot;&amp;allow_headers=x-force-preflight&quot;;
+  urlParameters += &quot;&amp;preflight_status=&quot; + preflightStatus;
+
+  promise_test(function(test) {
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
+      if (200 &lt;= preflightStatus &amp;&amp; 299 &gt;= preflightStatus) {
+        return fetch(url + urlParameters, requestInit).then(function(resp) {
+          assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+          assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
+        });
+      } else {
+        return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
+      }
+    });
+  }, desc);
+}
+
+var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+for (status of [200, 201, 202, 203, 204, 205, 206,
+                300, 301, 302, 303, 304, 305, 306, 307, 308,
+                400, 401, 402, 403, 404, 405,
+                501, 502, 503, 504, 505])
+  corsPreflightStatus(&quot;Preflight answered with status &quot; + status, corsUrl, status);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatushtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: preflight status code handling&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#cors-preflight-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-preflight-status.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,42 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-}
-
-/* Check preflight is ok if status is ok status (200  to 299)*/
-function corsPreflightStatus(desc, corsUrl, preflightStatus) {
-  var uuid_token = token();
-  var url = corsUrl;
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;};
-  /* Force preflight */
-  requestInit[&quot;headers&quot;] = {&quot;x-force-preflight&quot;: &quot;&quot;};
-
-  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
-  urlParameters += &quot;&amp;allow_headers=x-force-preflight&quot;;
-  urlParameters += &quot;&amp;preflight_status=&quot; + preflightStatus;
-
-  promise_test(function(test) {
-    fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      assert_equals(resp.status, 200, &quot;Clean stash response's status is 200&quot;);
-      if (200 &lt;= preflightStatus &amp;&amp; 299 &gt;= preflightStatus) {
-        return fetch(url + urlParameters, requestInit).then(function(resp) {
-          assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-          assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
-        });
-      } else {
-        return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit));
-      }
-    });
-  }, desc);
-}
-
-var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-for (status of [200, 201, 202, 203, 204, 205, 206,
-                300, 301, 302, 303, 304, 305, 306, 307, 308,
-                400, 401, 402, 403, 404, 405,
-                501, 502, 503, 504, 505])
-  corsPreflightStatus(&quot;Preflight answered with status &quot; + status, corsUrl, status);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightstatusworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-
-PASS CORS [DELETE], server allows 
-PASS CORS [DELETE], server refuses 
-PASS CORS [PUT], server allows 
-PASS CORS [PUT], server refuses 
-PASS CORS [PATCH], server allows 
-PASS CORS [PATCH], server refuses 
-PASS CORS [NEW], server allows 
-PASS CORS [NEW], server refuses 
-PASS CORS [GET] [x-test-header: allowed], server allows 
-PASS CORS [GET] [x-test-header: refused], server refuses 
-PASS CORS [GET] [several headers], server allows 
-PASS CORS [GET] [several headers], server refuses 
-PASS CORS [PUT] [several headers], server allows 
-PASS CORS [PUT] [several headers], server refuses 
-PASS CORS [PUT] [only safe headers], server allows 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,20 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: Check cors fetches requiring prefligh&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&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;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-method&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-header&quot;&gt;
-  &lt;/head&gt;
-  &lt;body&gt;
-    &lt;script&gt;
-      fetch_tests_from_worker(new Worker(&quot;cors-preflight.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 64: ReferenceError: Can't find variable: get_host_info
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: get_host_info
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function headerNames(headers)
+{
+    let names = [];
+    for (let header of headers)
+        names.push(header[0].toLowerCase());
+    return names
+}
+
+/*
+  Check preflight is done
+  Control if server allows method and headers and check accordingly
+  Check control access headers added by UA (for method and headers)
+*/
+function corsPreflight(desc, corsUrl, method, allowed, headers, safeHeaders) {
+  return promise_test(function(test) {
+    var uuid_token = token();
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(response) {
+      var url = corsUrl;
+      var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
+      var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;method&quot;: method};
+      var requestHeaders = [];
+      if (headers)
+        requestHeaders.push.apply(requestHeaders, headers);
+      if (safeHeaders)
+        requestHeaders.push.apply(requestHeaders, safeHeaders);
+      requestInit[&quot;headers&quot;] = requestHeaders;
+
+      if (allowed) {
+        urlParameters += &quot;&amp;allow_methods=&quot; + method + &quot;&amp;control_request_headers&quot;;
+        if (headers) {
+          //Make the server allow the headers
+          urlParameters += &quot;&amp;allow_headers=&quot; + headerNames(headers).join(&quot;%20%2C&quot;);
+        }
+        return fetch(url + urlParameters, requestInit).then(function(resp) {
+          assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+          assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
+          if (headers) {
+            var actualHeaders = resp.headers.get(&quot;x-control-request-headers&quot;).toLowerCase().split(&quot;,&quot;);
+            for (var i in actualHeaders)
+              actualHeaders[i] = actualHeaders[i].trim();
+            for (var header of headers)
+              assert_in_array(header[0].toLowerCase(), actualHeaders, &quot;Preflight asked permission for header: &quot; + header);
+
+            let accessControlAllowHeaders = headerNames(headers).sort().join(&quot;,&quot;);
+            assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), accessControlAllowHeaders, &quot;Access-Control-Allow-Headers value&quot;);
+            return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token);
+          } else {
+            assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), null, &quot;Access-Control-Request-Headers should be omitted&quot;)
+          }
+        });
+      } else {
+        return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit)).then(function(){
+          return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token);
+        });
+      }
+    });
+  }, desc);
+}
+
+var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+
+corsPreflight(&quot;CORS [DELETE], server allows&quot;, corsUrl, &quot;DELETE&quot;, true);
+corsPreflight(&quot;CORS [DELETE], server refuses&quot;, corsUrl, &quot;DELETE&quot;, false);
+corsPreflight(&quot;CORS [PUT], server allows&quot;, corsUrl, &quot;PUT&quot;, true);
+corsPreflight(&quot;CORS [PUT], server refuses&quot;, corsUrl, &quot;PUT&quot;, false);
+corsPreflight(&quot;CORS [PATCH], server allows&quot;, corsUrl, &quot;PATCH&quot;, true);
+corsPreflight(&quot;CORS [PATCH], server refuses&quot;, corsUrl, &quot;PATCH&quot;, false);
+corsPreflight(&quot;CORS [NEW], server allows&quot;, corsUrl, &quot;NEW&quot;, true);
+corsPreflight(&quot;CORS [NEW], server refuses&quot;, corsUrl, &quot;NEW&quot;, false);
+
+corsPreflight(&quot;CORS [GET] [x-test-header: allowed], server allows&quot;, corsUrl, &quot;GET&quot;, true, [[&quot;x-test-header1&quot;, &quot;allowed&quot;]]);
+corsPreflight(&quot;CORS [GET] [x-test-header: refused], server refuses&quot;, corsUrl, &quot;GET&quot;, false, [[&quot;x-test-header1&quot;, &quot;refused&quot;]]);
+
+var headers = [
+    [&quot;x-test-header1&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;x-test-header2&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;X-test-header3&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;x-test-header-b&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;x-test-header-D&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;x-test-header-C&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;x-test-header-a&quot;, &quot;allowedOrRefused&quot;],
+    [&quot;Content-Type&quot;, &quot;allowedOrRefused&quot;],
+];
+var safeHeaders= [
+    [&quot;Accept&quot;, &quot;*&quot;],
+    [&quot;Accept-Language&quot;, &quot;bzh&quot;],
+    [&quot;Content-Language&quot;, &quot;eu&quot;],
+];
+
+corsPreflight(&quot;CORS [GET] [several headers], server allows&quot;, corsUrl, &quot;GET&quot;, true, headers, safeHeaders);
+corsPreflight(&quot;CORS [GET] [several headers], server refuses&quot;, corsUrl, &quot;GET&quot;, false, headers, safeHeaders);
+corsPreflight(&quot;CORS [PUT] [several headers], server allows&quot;, corsUrl, &quot;PUT&quot;, true, headers, safeHeaders);
+corsPreflight(&quot;CORS [PUT] [several headers], server refuses&quot;, corsUrl, &quot;PUT&quot;, false, headers, safeHeaders);
+
+corsPreflight(&quot;CORS [PUT] [only safe headers], server allows&quot;, corsUrl, &quot;PUT&quot;, true, null, safeHeaders);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflighthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: Check cors fetches requiring preflight&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-cors-protocol&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-method&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#simple-header&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-preflight.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,104 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-}
-
-function headerNames(headers)
-{
-    let names = [];
-    for (let header of headers)
-        names.push(header[0].toLowerCase());
-    return names
-}
-
-/*
-  Check preflight is done
-  Control if server allows method and headers and check accordingly
-  Check control access headers added by UA (for method and headers)
-*/
-function corsPreflight(desc, corsUrl, method, allowed, headers, safeHeaders) {
-  return promise_test(function(test) {
-    var uuid_token = token();
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(response) {
-      var url = corsUrl;
-      var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
-      var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;method&quot;: method};
-      var requestHeaders = [];
-      if (headers)
-        requestHeaders.push.apply(requestHeaders, headers);
-      if (safeHeaders)
-        requestHeaders.push.apply(requestHeaders, safeHeaders);
-      requestInit[&quot;headers&quot;] = requestHeaders;
-
-      if (allowed) {
-        urlParameters += &quot;&amp;allow_methods=&quot; + method + &quot;&amp;control_request_headers&quot;;
-        if (headers) {
-          //Make the server allow the headers
-          urlParameters += &quot;&amp;allow_headers=&quot; + headerNames(headers).join(&quot;%20%2C&quot;);
-        }
-        return fetch(url + urlParameters, requestInit).then(function(resp) {
-          assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-          assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
-          if (headers) {
-            var actualHeaders = resp.headers.get(&quot;x-control-request-headers&quot;).toLowerCase().split(&quot;,&quot;);
-            for (var i in actualHeaders)
-              actualHeaders[i] = actualHeaders[i].trim();
-            for (var header of headers)
-              assert_in_array(header[0].toLowerCase(), actualHeaders, &quot;Preflight asked permission for header: &quot; + header);
-
-            let accessControlAllowHeaders = headerNames(headers).sort().join(&quot;,&quot;);
-            assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), accessControlAllowHeaders, &quot;Access-Control-Allow-Headers value&quot;);
-            return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token);
-          } else {
-            assert_equals(resp.headers.get(&quot;x-control-request-headers&quot;), null, &quot;Access-Control-Request-Headers should be omitted&quot;)
-          }
-        });
-      } else {
-        return promise_rejects(test, new TypeError(), fetch(url + urlParameters, requestInit)).then(function(){
-          return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token);
-        });
-      }
-    });
-  }, desc);
-}
-
-var corsUrl = get_host_info().HTTP_REMOTE_ORIGIN + dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-
-corsPreflight(&quot;CORS [DELETE], server allows&quot;, corsUrl, &quot;DELETE&quot;, true);
-corsPreflight(&quot;CORS [DELETE], server refuses&quot;, corsUrl, &quot;DELETE&quot;, false);
-corsPreflight(&quot;CORS [PUT], server allows&quot;, corsUrl, &quot;PUT&quot;, true);
-corsPreflight(&quot;CORS [PUT], server refuses&quot;, corsUrl, &quot;PUT&quot;, false);
-corsPreflight(&quot;CORS [PATCH], server allows&quot;, corsUrl, &quot;PATCH&quot;, true);
-corsPreflight(&quot;CORS [PATCH], server refuses&quot;, corsUrl, &quot;PATCH&quot;, false);
-corsPreflight(&quot;CORS [NEW], server allows&quot;, corsUrl, &quot;NEW&quot;, true);
-corsPreflight(&quot;CORS [NEW], server refuses&quot;, corsUrl, &quot;NEW&quot;, false);
-
-corsPreflight(&quot;CORS [GET] [x-test-header: allowed], server allows&quot;, corsUrl, &quot;GET&quot;, true, [[&quot;x-test-header1&quot;, &quot;allowed&quot;]]);
-corsPreflight(&quot;CORS [GET] [x-test-header: refused], server refuses&quot;, corsUrl, &quot;GET&quot;, false, [[&quot;x-test-header1&quot;, &quot;refused&quot;]]);
-
-var headers = [
-    [&quot;x-test-header1&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;x-test-header2&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;X-test-header3&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;x-test-header-b&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;x-test-header-D&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;x-test-header-C&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;x-test-header-a&quot;, &quot;allowedOrRefused&quot;],
-    [&quot;Content-Type&quot;, &quot;allowedOrRefused&quot;],
-];
-var safeHeaders= [
-    [&quot;Accept&quot;, &quot;*&quot;],
-    [&quot;Accept-Language&quot;, &quot;bzh&quot;],
-    [&quot;Content-Language&quot;, &quot;eu&quot;],
-];
-
-corsPreflight(&quot;CORS [GET] [several headers], server allows&quot;, corsUrl, &quot;GET&quot;, true, headers, safeHeaders);
-corsPreflight(&quot;CORS [GET] [several headers], server refuses&quot;, corsUrl, &quot;GET&quot;, false, headers, safeHeaders);
-corsPreflight(&quot;CORS [PUT] [several headers], server allows&quot;, corsUrl, &quot;PUT&quot;, true, headers, safeHeaders);
-corsPreflight(&quot;CORS [PUT] [several headers], server refuses&quot;, corsUrl, &quot;PUT&quot;, false, headers, safeHeaders);
-
-corsPreflight(&quot;CORS [PUT] [only safe headers], server allows&quot;, corsUrl, &quot;PUT&quot;, true, null, safeHeaders);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorspreflightworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-
-PASS Redirect 301 from same origin to remote without user and password 
-FAIL Redirect 301 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 302 from same origin to remote without user and password 
-FAIL Redirect 302 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 303 from same origin to remote without user and password 
-FAIL Redirect 303 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 307 from same origin to remote without user and password 
-FAIL Redirect 307 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 308 from same origin to remote without user and password 
-FAIL Redirect 308 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-
-PASS Redirect 301 from same origin to remote without user and password 
-FAIL Redirect 301 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 301 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 302 from same origin to remote without user and password 
-FAIL Redirect 302 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 302 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 303 from same origin to remote without user and password 
-FAIL Redirect 303 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 303 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 307 from same origin to remote without user and password 
-FAIL Redirect 307 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 307 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-PASS Redirect 308 from same origin to remote without user and password 
-FAIL Redirect 308 from same origin to remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from same origin to remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from same origin to remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same origin with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same origin with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same origin with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to same remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to another remote with user and password assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to another remote with user assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL Redirect 308 from remote to another remote with password assert_unreached: Should have rejected: undefined Reached unreachable code
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: redirection url has credentials&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-redirect-credentials.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 21: ReferenceError: Can't find variable: dirname
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: dirname
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsRedirectCredentials(desc, redirectUrl, redirectLocation, redirectStatus, locationCredentials) {
+  var url = redirectUrl
+  var urlParameters = &quot;?redirect_status=&quot; + redirectStatus;
+  urlParameters += &quot;&amp;location=&quot; + redirectLocation.replace(&quot;://&quot;, &quot;://&quot; + locationCredentials + &quot;@&quot;);
+
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;};
+
+  promise_test(t =&gt; {
+    const result = fetch(url + urlParameters, requestInit)
+    if(locationCredentials === &quot;&quot;) {
+      return result;
+    } else {
+      return promise_rejects(t, new TypeError(), result);
+    }
+  }, desc);
+}
+
+var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
+var preflightPath = dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+
+var host_info = get_host_info();
+
+var localRedirect = host_info.HTTP_ORIGIN + redirPath;
+var remoteRedirect = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + redirPath;
+
+var localLocation = host_info.HTTP_ORIGIN + preflightPath;
+var remoteLocation = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath;
+var remoteLocation2 = host_info.HTTP_REMOTE_ORIGIN + preflightPath;
+
+for (var code of [301, 302, 303, 307, 308]) {
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote without user and password&quot;, localRedirect, remoteLocation, code, &quot;&quot;);
+
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote with user and password&quot;, localRedirect, remoteLocation, code, &quot;user:password&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote with user&quot;, localRedirect, remoteLocation, code, &quot;user:&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote with password&quot;, localRedirect, remoteLocation, code, &quot;:password&quot;);
+
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same origin with user and password&quot;, remoteRedirect, localLocation, code, &quot;user:password&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same origin with user&quot;, remoteRedirect, localLocation, code, &quot;user:&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same origin with password&quot;, remoteRedirect, localLocation, code, &quot;:password&quot;);
+
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same remote with user and password&quot;, remoteRedirect, remoteLocation, code, &quot;user:password&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same remote with user&quot;, remoteRedirect, remoteLocation, code, &quot;user:&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same remote with password&quot;, remoteRedirect, remoteLocation, code, &quot;:password&quot;);
+
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to another remote with user and password&quot;, remoteRedirect, remoteLocation2, code, &quot;user:password&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to another remote with user&quot;, remoteRedirect, remoteLocation2, code, &quot;user:&quot;);
+  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to another remote with password&quot;, remoteRedirect, remoteLocation2, code, &quot;:password&quot;);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: redirection url has credentials&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-redirect-credentials.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,56 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;)
-}
-
-function corsRedirectCredentials(desc, redirectUrl, redirectLocation, redirectStatus, locationCredentials) {
-  var url = redirectUrl
-  var urlParameters = &quot;?redirect_status=&quot; + redirectStatus;
-  urlParameters += &quot;&amp;location=&quot; + redirectLocation.replace(&quot;://&quot;, &quot;://&quot; + locationCredentials + &quot;@&quot;);
-
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;};
-
-  promise_test(t =&gt; {
-    const result = fetch(url + urlParameters, requestInit)
-    if(locationCredentials === &quot;&quot;) {
-      return result;
-    } else {
-      return promise_rejects(t, new TypeError(), result);
-    }
-  }, desc);
-}
-
-var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
-var preflightPath = dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-
-var host_info = get_host_info();
-
-var localRedirect = host_info.HTTP_ORIGIN + redirPath;
-var remoteRedirect = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + redirPath;
-
-var localLocation = host_info.HTTP_ORIGIN + preflightPath;
-var remoteLocation = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath;
-var remoteLocation2 = host_info.HTTP_REMOTE_ORIGIN + preflightPath;
-
-for (var code of [301, 302, 303, 307, 308]) {
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote without user and password&quot;, localRedirect, remoteLocation, code, &quot;&quot;);
-
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote with user and password&quot;, localRedirect, remoteLocation, code, &quot;user:password&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote with user&quot;, localRedirect, remoteLocation, code, &quot;user:&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from same origin to remote with password&quot;, localRedirect, remoteLocation, code, &quot;:password&quot;);
-
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same origin with user and password&quot;, remoteRedirect, localLocation, code, &quot;user:password&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same origin with user&quot;, remoteRedirect, localLocation, code, &quot;user:&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same origin with password&quot;, remoteRedirect, localLocation, code, &quot;:password&quot;);
-
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same remote with user and password&quot;, remoteRedirect, remoteLocation, code, &quot;user:password&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same remote with user&quot;, remoteRedirect, remoteLocation, code, &quot;user:&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to same remote with password&quot;, remoteRedirect, remoteLocation, code, &quot;:password&quot;);
-
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to another remote with user and password&quot;, remoteRedirect, remoteLocation2, code, &quot;user:password&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to another remote with user&quot;, remoteRedirect, remoteLocation2, code, &quot;user:&quot;);
-  corsRedirectCredentials(&quot;Redirect &quot; + code + &quot; from remote to another remote with password&quot;, remoteRedirect, remoteLocation2, code, &quot;:password&quot;);
-}
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectcredentialsworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,22 +0,0 @@
</span><del>-
-PASS Redirect 301: cors to same cors 
-PASS Redirect 301: cors to another cors 
-PASS Redirect 301: same origin to cors 
-PASS Redirect 301: cors to same origin 
-PASS Redirect 302: cors to same cors 
-PASS Redirect 302: cors to another cors 
-PASS Redirect 302: same origin to cors 
-PASS Redirect 302: cors to same origin 
-PASS Redirect 303: cors to same cors 
-PASS Redirect 303: cors to another cors 
-PASS Redirect 303: same origin to cors 
-PASS Redirect 303: cors to same origin 
-PASS Redirect 307: cors to same cors 
-PASS Redirect 307: cors to another cors 
-PASS Redirect 307: same origin to cors 
-PASS Redirect 307: cors to same origin 
-PASS Redirect 308: cors to same cors 
-PASS Redirect 308: cors to another cors 
-PASS Redirect 308: same origin to cors 
-PASS Redirect 308: cors to same origin 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,32 +0,0 @@
</span><del>-
-PASS Redirect 301: same origin to cors (preflight after redirection success case) 
-PASS Redirect 301: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 301: cors to same origin (preflight after redirection success case) 
-PASS Redirect 301: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 301: cors to another cors (preflight after redirection success case) 
-PASS Redirect 301: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 302: same origin to cors (preflight after redirection success case) 
-PASS Redirect 302: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 302: cors to same origin (preflight after redirection success case) 
-PASS Redirect 302: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 302: cors to another cors (preflight after redirection success case) 
-PASS Redirect 302: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 303: same origin to cors (preflight after redirection success case) 
-PASS Redirect 303: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 303: cors to same origin (preflight after redirection success case) 
-PASS Redirect 303: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 303: cors to another cors (preflight after redirection success case) 
-PASS Redirect 303: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 307: same origin to cors (preflight after redirection success case) 
-PASS Redirect 307: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 307: cors to same origin (preflight after redirection success case) 
-PASS Redirect 307: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 307: cors to another cors (preflight after redirection success case) 
-PASS Redirect 307: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 308: same origin to cors (preflight after redirection success case) 
-PASS Redirect 308: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 308: cors to same origin (preflight after redirection success case) 
-PASS Redirect 308: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 308: cors to another cors (preflight after redirection success case) 
-PASS Redirect 308: cors to another cors (preflight after redirection failure case) 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,32 +0,0 @@
</span><del>-
-PASS Redirect 301: same origin to cors (preflight after redirection success case) 
-PASS Redirect 301: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 301: cors to same origin (preflight after redirection success case) 
-PASS Redirect 301: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 301: cors to another cors (preflight after redirection success case) 
-PASS Redirect 301: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 302: same origin to cors (preflight after redirection success case) 
-PASS Redirect 302: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 302: cors to same origin (preflight after redirection success case) 
-PASS Redirect 302: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 302: cors to another cors (preflight after redirection success case) 
-PASS Redirect 302: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 303: same origin to cors (preflight after redirection success case) 
-PASS Redirect 303: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 303: cors to same origin (preflight after redirection success case) 
-PASS Redirect 303: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 303: cors to another cors (preflight after redirection success case) 
-PASS Redirect 303: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 307: same origin to cors (preflight after redirection success case) 
-PASS Redirect 307: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 307: cors to same origin (preflight after redirection success case) 
-PASS Redirect 307: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 307: cors to another cors (preflight after redirection success case) 
-PASS Redirect 307: cors to another cors (preflight after redirection failure case) 
-PASS Redirect 308: same origin to cors (preflight after redirection success case) 
-PASS Redirect 308: same origin to cors (preflight after redirection failure case) 
-PASS Redirect 308: cors to same origin (preflight after redirection success case) 
-PASS Redirect 308: cors to same origin (preflight after redirection failure case) 
-PASS Redirect 308: cors to another cors (preflight after redirection success case) 
-PASS Redirect 308: cors to another cors (preflight after redirection failure case) 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: CORS preflight after redirection&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-redirect-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-redirect-preflight.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 29: ReferenceError: Can't find variable: dirname
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: dirname
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,45 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expectSuccess) {
+  var urlBaseParameters = &quot;&amp;redirect_status=&quot; + redirectStatus;
+  var urlParametersSuccess = urlBaseParameters + &quot;&amp;allow_headers=x-w3c&amp;location=&quot; + encodeURIComponent(redirectLocation + &quot;?allow_headers=x-w3c&quot;);
+  var urlParametersFailure = urlBaseParameters + &quot;&amp;location=&quot; + encodeURIComponent(redirectLocation);
+
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;, &quot;headers&quot; : [[&quot;x-w3c&quot;, &quot;test&quot;]]};
+
+  promise_test(function(test) {
+    var uuid_token = token();
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      return fetch(redirectUrl + &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot; + urlParametersSuccess, requestInit).then(function(resp) {
+        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
+      });
+    });
+  }, desc + &quot; (preflight after redirection success case)&quot;);
+  promise_test(function(test) {
+    var uuid_token = token();
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      return promise_rejects(test, new TypeError(), fetch(redirectUrl + &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot; + urlParametersFailure, requestInit));
+    });
+  }, desc + &quot; (preflight after redirection failure case)&quot;);
+}
+
+var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
+var preflightPath = dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+
+var host_info = get_host_info();
+
+var localRedirect = host_info.HTTP_ORIGIN + redirPath;
+var remoteRedirect = host_info.HTTP_REMOTE_ORIGIN + redirPath;
+
+var localLocation = host_info.HTTP_ORIGIN + preflightPath;
+var remoteLocation = host_info.HTTP_REMOTE_ORIGIN + preflightPath;
+var remoteLocation2 = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath;
+
+for (var code of [301, 302, 303, 307, 308]) {
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: same origin to cors&quot;, localRedirect, remoteLocation, code);
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to same origin&quot;, remoteRedirect, localLocation, code);
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to another cors&quot;, remoteRedirect, remoteLocation2, code);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflighthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: CORS preflight after redirection&lt;/title&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-redirect-fetch&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-redirect-preflight.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,50 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expectSuccess) {
-  var urlBaseParameters = &quot;&amp;redirect_status=&quot; + redirectStatus;
-  var urlParametersSuccess = urlBaseParameters + &quot;&amp;allow_headers=x-w3c&amp;location=&quot; + encodeURIComponent(redirectLocation + &quot;?allow_headers=x-w3c&quot;);
-  var urlParametersFailure = urlBaseParameters + &quot;&amp;location=&quot; + encodeURIComponent(redirectLocation);
-
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;, &quot;headers&quot; : [[&quot;x-w3c&quot;, &quot;test&quot;]]};
-
-  promise_test(function(test) {
-    var uuid_token = token();
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      return fetch(redirectUrl + &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot; + urlParametersSuccess, requestInit).then(function(resp) {
-        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;1&quot;, &quot;Preflight request has been made&quot;);
-      });
-    });
-  }, desc + &quot; (preflight after redirection success case)&quot;);
-  promise_test(function(test) {
-    var uuid_token = token();
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      return promise_rejects(test, new TypeError(), fetch(redirectUrl + &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot; + urlParametersFailure, requestInit));
-    });
-  }, desc + &quot; (preflight after redirection failure case)&quot;);
-}
-
-var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
-var preflightPath = dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-
-var host_info = get_host_info();
-
-var localRedirect = host_info.HTTP_ORIGIN + redirPath;
-var remoteRedirect = host_info.HTTP_REMOTE_ORIGIN + redirPath;
-
-var localLocation = host_info.HTTP_ORIGIN + preflightPath;
-var remoteLocation = host_info.HTTP_REMOTE_ORIGIN + preflightPath;
-var remoteLocation2 = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath;
-
-for (var code of [301, 302, 303, 307, 308]) {
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: same origin to cors&quot;, localRedirect, remoteLocation, code);
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to same origin&quot;, remoteRedirect, localLocation, code);
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to another cors&quot;, remoteRedirect, remoteLocation2, code);
-}
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectpreflightworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,22 +0,0 @@
</span><del>-
-PASS Redirect 301: cors to same cors 
-PASS Redirect 301: cors to another cors 
-PASS Redirect 301: same origin to cors 
-PASS Redirect 301: cors to same origin 
-PASS Redirect 302: cors to same cors 
-PASS Redirect 302: cors to another cors 
-PASS Redirect 302: same origin to cors 
-PASS Redirect 302: cors to same origin 
-PASS Redirect 303: cors to same cors 
-PASS Redirect 303: cors to another cors 
-PASS Redirect 303: same origin to cors 
-PASS Redirect 303: cors to same origin 
-PASS Redirect 307: cors to same cors 
-PASS Redirect 307: cors to another cors 
-PASS Redirect 307: same origin to cors 
-PASS Redirect 307: cors to same origin 
-PASS Redirect 308: cors to same cors 
-PASS Redirect 308: cors to another cors 
-PASS Redirect 308: same origin to cors 
-PASS Redirect 308: cors to same origin 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: CORS Redirection with several origins&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cors-redirect.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 25: ReferenceError: Can't find variable: dirname
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: dirname
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+// META: script=/common/utils.js
+// META: script=../resources/utils.js
+// META: script=/common/get-host-info.sub.js
+
+function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expectedOrigin) {
+  var uuid_token = token();
+  var url = redirectUrl;
+  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
+  urlParameters += &quot;&amp;redirect_status=&quot; + redirectStatus;
+  urlParameters += &quot;&amp;location=&quot; + encodeURIComponent(redirectLocation);
+
+  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;};
+
+  return promise_test(function(test) {
+    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
+      return fetch(url + urlParameters, requestInit).then(function(resp) {
+        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
+        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;0&quot;, &quot;No preflight request has been made&quot;);
+        assert_equals(resp.headers.get(&quot;x-origin&quot;), expectedOrigin, &quot;Origin is correctly set after redirect&quot;);
+      });
+    });
+  }, desc);
+}
+
+var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
+var preflightPath = dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
+
+var host_info = get_host_info();
+
+var localRedirect = host_info.HTTP_ORIGIN + redirPath;
+var remoteRedirect = host_info.HTTP_REMOTE_ORIGIN + redirPath;
+
+var localLocation = host_info.HTTP_ORIGIN + preflightPath;
+var remoteLocation = host_info.HTTP_REMOTE_ORIGIN + preflightPath;
+var remoteLocation2 = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath;
+
+for (var code of [301, 302, 303, 307, 308]) {
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to same cors&quot;, remoteRedirect, remoteLocation, code, location.origin);
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to another cors&quot;, remoteRedirect, remoteLocation2, code, &quot;null&quot;);
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: same origin to cors&quot;, localRedirect, remoteLocation, code, location.origin);
+  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to same origin&quot;, remoteRedirect, localLocation, code, &quot;null&quot;);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirecthtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch:  CORS Redirection with several origins&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-or-cache-fetch&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 src=&quot;/common/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cors-redirect.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,47 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;/common/utils.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-  importScripts(&quot;/common/get-host-info.sub.js&quot;);
-}
-
-function corsRedirect(desc, redirectUrl, redirectLocation, redirectStatus, expectedOrigin) {
-  var uuid_token = token();
-  var url = redirectUrl;
-  var urlParameters = &quot;?token=&quot; + uuid_token + &quot;&amp;max_age=0&quot;;
-  urlParameters += &quot;&amp;redirect_status=&quot; + redirectStatus;
-  urlParameters += &quot;&amp;location=&quot; + encodeURIComponent(redirectLocation);
-
-  var requestInit = {&quot;mode&quot;: &quot;cors&quot;, &quot;redirect&quot;: &quot;follow&quot;};
-
-  return promise_test(function(test) {
-    return fetch(RESOURCES_DIR + &quot;clean-stash.py?token=&quot; + uuid_token).then(function(resp) {
-      return fetch(url + urlParameters, requestInit).then(function(resp) {
-        assert_equals(resp.status, 200, &quot;Response's status is 200&quot;);
-        assert_equals(resp.headers.get(&quot;x-did-preflight&quot;), &quot;0&quot;, &quot;No preflight request has been made&quot;);
-        assert_equals(resp.headers.get(&quot;x-origin&quot;), expectedOrigin, &quot;Origin is correctly set after redirect&quot;);
-      });
-    });
-  }, desc);
-}
-
-var redirPath = dirname(location.pathname) + RESOURCES_DIR + &quot;redirect.py&quot;;
-var preflightPath = dirname(location.pathname) + RESOURCES_DIR + &quot;preflight.py&quot;;
-
-var host_info = get_host_info();
-
-var localRedirect = host_info.HTTP_ORIGIN + redirPath;
-var remoteRedirect = host_info.HTTP_REMOTE_ORIGIN + redirPath;
-
-var localLocation = host_info.HTTP_ORIGIN + preflightPath;
-var remoteLocation = host_info.HTTP_REMOTE_ORIGIN + preflightPath;
-var remoteLocation2 = host_info.HTTP_ORIGIN_WITH_DIFFERENT_PORT + preflightPath;
-
-for (var code of [301, 302, 303, 307, 308]) {
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to same cors&quot;, remoteRedirect, remoteLocation, code, location.origin);
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to another cors&quot;, remoteRedirect, remoteLocation2, code, &quot;null&quot;);
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: same origin to cors&quot;, localRedirect, remoteLocation, code, location.origin);
-  corsRedirect(&quot;Redirect &quot; + code + &quot;: cors to same origin&quot;, remoteRedirect, localLocation, code, &quot;null&quot;);
-}
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorscorsredirectworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicorsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,12 +15,8 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-basic.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-cookies.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star-worker.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-expose-star.js
</span><span class="lines">@@ -30,33 +26,13 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins-worker.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-multiple-origins.js
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-no-preflight.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-origin.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-redirect.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-referrer.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-star.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight-status.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-preflight.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-credentials.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect-preflight.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/cors/cors-redirect.any.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,5 +0,0 @@
</span><del>-
-PASS User-added Authorization header with include mode 
-PASS User-added Authorization header with same-origin mode 
-PASS User-added Authorization header with omit mode 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,5 +0,0 @@
</span><del>-
-PASS User-added Authorization header with include mode 
-PASS User-added Authorization header with same-origin mode 
-PASS User-added Authorization header with omit mode 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: Authorisation header management for basic authentication&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;authentication-basic.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL User-added Authorization header with include mode Can't find variable: RESOURCES_DIR
+FAIL User-added Authorization header with same-origin mode Can't find variable: RESOURCES_DIR
+FAIL User-added Authorization header with omit mode Can't find variable: RESOURCES_DIR
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+// META: script=../resources/utils.js
+
+function basicAuth(desc, user, pass, mode, status) {
+  promise_test(function(test) {
+    var headers = { &quot;Authorization&quot;: &quot;Basic &quot; + btoa(user + &quot;:&quot; + pass)};
+    var requestInit = {&quot;credentials&quot;: mode, &quot;headers&quot;: headers};
+    return fetch(RESOURCES_DIR + &quot;authentication.py?realm=test&quot;, requestInit).then(function(resp) {
+        assert_equals(resp.status, status, &quot;HTTP status is &quot; + status);
+        assert_equals(resp.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
+    });
+  }, desc);
+}
+
+basicAuth(&quot;User-added Authorization header with include mode&quot;, &quot;user&quot;, &quot;password&quot;, &quot;include&quot;, 200);
+basicAuth(&quot;User-added Authorization header with same-origin mode&quot;, &quot;user&quot;, &quot;password&quot;, &quot;same-origin&quot;, 200);
+basicAuth(&quot;User-added Authorization header with omit mode&quot;, &quot;user&quot;, &quot;password&quot;, &quot;omit&quot;, 200);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasichtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: Authorisation header management for basic authentication&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;authentication-basic.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,21 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function basicAuth(desc, user, pass, mode, status) {
-  promise_test(function(test) {
-    var headers = { &quot;Authorization&quot;: &quot;Basic &quot; + btoa(user + &quot;:&quot; + pass)};
-    var requestInit = {&quot;credentials&quot;: mode, &quot;headers&quot;: headers};
-    return fetch(RESOURCES_DIR + &quot;authentication.py?realm=test&quot;, requestInit).then(function(resp) {
-        assert_equals(resp.status, status, &quot;HTTP status is &quot; + status);
-        assert_equals(resp.type , &quot;basic&quot;, &quot;Response's type is basic&quot;);
-    });
-  }, desc);
-}
-
-basicAuth(&quot;User-added Authorization header with include mode&quot;, &quot;user&quot;, &quot;password&quot;, &quot;include&quot;, 200);
-basicAuth(&quot;User-added Authorization header with same-origin mode&quot;, &quot;user&quot;, &quot;password&quot;, &quot;same-origin&quot;, 200);
-basicAuth(&quot;User-added Authorization header with omit mode&quot;, &quot;user&quot;, &quot;password&quot;, &quot;omit&quot;, 200);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsauthenticationbasicworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,9 +0,0 @@
</span><del>-
-PASS Include mode: 1 cookie 
-PASS Include mode: 2 cookies 
-PASS Omit mode: discard cookies 
-PASS Omit mode: no cookie is stored 
-PASS Omit mode: no cookie is sent 
-PASS Same-origin mode: 1 cookie 
-PASS Same-origin mode: 2 cookies 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,9 +0,0 @@
</span><del>-
-PASS Include mode: 1 cookie 
-PASS Include mode: 2 cookies 
-PASS Omit mode: discard cookies 
-PASS Omit mode: no cookie is stored 
-PASS Omit mode: no cookie is sent 
-PASS Same-origin mode: 1 cookie 
-PASS Same-origin mode: 2 cookies 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch in worker: cookies management&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-fetch&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;
-      fetch_tests_from_worker(new Worker(&quot;cookies.js&quot;));
-    &lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 4: ReferenceError: Can't find variable: RESOURCES_DIR
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: RESOURCES_DIR
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+// META: script=../resources/utils.js
+
+function cookies(desc, credentials1, credentials2 ,cookies) {
+  var url = RESOURCES_DIR + &quot;top.txt&quot;
+  var urlParameters = &quot;&quot;;
+  var urlCleanParameters = &quot;&quot;;
+  if (cookies) {
+    urlParameters +=&quot;?pipe=header(Set-Cookie,&quot;;
+    urlParameters += cookies.join(&quot;,True)|header(Set-Cookie,&quot;) +  &quot;,True)&quot;;
+    urlCleanParameters +=&quot;?pipe=header(Set-Cookie,&quot;;
+    urlCleanParameters +=  cookies.join(&quot;%3B%20max-age=0,True)|header(Set-Cookie,&quot;) +  &quot;%3B%20max-age=0,True)&quot;;
+  }
+
+  var requestInit = {&quot;credentials&quot;: credentials1}
+  promise_test(function(test){
+    var requestInit = {&quot;credentials&quot;: credentials1}
+    return fetch(url + urlParameters, requestInit).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;);
+      //check cookies sent
+      return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=cookie&quot; , {&quot;credentials&quot;: credentials2});
+    }).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_false(resp.headers.has(&quot;Cookie&quot;) , &quot;Cookie header is not exposed in response&quot;);
+      if (credentials1 != &quot;omit&quot; &amp;&amp; credentials2 != &quot;omit&quot;) {
+        assert_equals(resp.headers.get(&quot;x-request-cookie&quot;) , cookies.join(&quot;; &quot;), &quot;Request include cookie(s)&quot;);
+      }
+      else {
+        assert_false(resp.headers.has(&quot;x-request-cookie&quot;) , &quot;Request does not have cookie(s)&quot;);
+      }
+      //clean cookies
+      return fetch(url + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;});
+    }).catch(function(e) {
+      return fetch(url + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;}).then(function() {
+         return Promise.reject(e);
+      });
+    });
+  }, desc);
+}
+
+cookies(&quot;Include mode: 1 cookie&quot;, &quot;include&quot;, &quot;include&quot;, [&quot;a=1&quot;]);
+cookies(&quot;Include mode: 2 cookies&quot;, &quot;include&quot;, &quot;include&quot;, [&quot;b=2&quot;, &quot;c=3&quot;]);
+cookies(&quot;Omit mode: discard cookies&quot;, &quot;omit&quot;, &quot;omit&quot;, [&quot;d=4&quot;]);
+cookies(&quot;Omit mode: no cookie is stored&quot;, &quot;omit&quot;, &quot;include&quot;, [&quot;e=5&quot;]);
+cookies(&quot;Omit mode: no cookie is sent&quot;, &quot;include&quot;, &quot;omit&quot;, [&quot;f=6&quot;]);
+cookies(&quot;Same-origin mode: 1 cookie&quot;, &quot;same-origin&quot;, &quot;same-origin&quot;, [&quot;a=1&quot;]);
+cookies(&quot;Same-origin mode: 2 cookies&quot;, &quot;same-origin&quot;, &quot;same-origin&quot;, [&quot;b=2&quot;, &quot;c=3&quot;]);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookieshtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,17 +0,0 @@
</span><del>-&lt;!doctype html&gt;
-&lt;html&gt;
-  &lt;head&gt;
-    &lt;meta charset=&quot;utf-8&quot;&gt;
-    &lt;title&gt;Fetch: cookies management&lt;/title&gt;
-    &lt;meta name=&quot;author&quot; title=&quot;Canon Research France&quot; href=&quot;https://www.crf.canon.fr&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#main-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-fetch&quot;&gt;
-    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#http-network-fetch&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 src=&quot;../resources/utils.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;cookies.js&quot;&gt;&lt;/script&gt;
-  &lt;/body&gt;
-&lt;/html&gt;
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,53 +0,0 @@
</span><del>-if (this.document === undefined) {
-  importScripts(&quot;/resources/testharness.js&quot;);
-  importScripts(&quot;../resources/utils.js&quot;);
-}
-
-function cookies(desc, credentials1, credentials2 ,cookies) {
-  var url = RESOURCES_DIR + &quot;top.txt&quot;
-  var urlParameters = &quot;&quot;;
-  var urlCleanParameters = &quot;&quot;;
-  if (cookies) {
-    urlParameters +=&quot;?pipe=header(Set-Cookie,&quot;;
-    urlParameters += cookies.join(&quot;,True)|header(Set-Cookie,&quot;) +  &quot;,True)&quot;;
-    urlCleanParameters +=&quot;?pipe=header(Set-Cookie,&quot;;
-    urlCleanParameters +=  cookies.join(&quot;%3B%20max-age=0,True)|header(Set-Cookie,&quot;) +  &quot;%3B%20max-age=0,True)&quot;;
-  }
-
-  var requestInit = {&quot;credentials&quot;: credentials1}
-  promise_test(function(test){
-    var requestInit = {&quot;credentials&quot;: credentials1}
-    return fetch(url + urlParameters, requestInit).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;);
-      //check cookies sent
-      return fetch(RESOURCES_DIR + &quot;inspect-headers.py?headers=cookie&quot; , {&quot;credentials&quot;: credentials2});
-    }).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_false(resp.headers.has(&quot;Cookie&quot;) , &quot;Cookie header is not exposed in response&quot;);
-      if (credentials1 != &quot;omit&quot; &amp;&amp; credentials2 != &quot;omit&quot;) {
-        assert_equals(resp.headers.get(&quot;x-request-cookie&quot;) , cookies.join(&quot;; &quot;), &quot;Request include cookie(s)&quot;);
-      }
-      else {
-        assert_false(resp.headers.has(&quot;x-request-cookie&quot;) , &quot;Request does not have cookie(s)&quot;);
-      }
-      //clean cookies
-      return fetch(url + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;});
-    }).catch(function(e) {
-      return fetch(url + urlCleanParameters, {&quot;credentials&quot;: &quot;include&quot;}).then(function() {
-         return Promise.reject(e);
-      });
-    });
-  }, desc);
-}
-
-cookies(&quot;Include mode: 1 cookie&quot;, &quot;include&quot;, &quot;include&quot;, [&quot;a=1&quot;]);
-cookies(&quot;Include mode: 2 cookies&quot;, &quot;include&quot;, &quot;include&quot;, [&quot;b=2&quot;, &quot;c=3&quot;]);
-cookies(&quot;Omit mode: discard cookies&quot;, &quot;omit&quot;, &quot;omit&quot;, [&quot;d=4&quot;]);
-cookies(&quot;Omit mode: no cookie is stored&quot;, &quot;omit&quot;, &quot;include&quot;, [&quot;e=5&quot;]);
-cookies(&quot;Omit mode: no cookie is sent&quot;, &quot;include&quot;, &quot;omit&quot;, [&quot;f=6&quot;]);
-cookies(&quot;Same-origin mode: 1 cookie&quot;, &quot;same-origin&quot;, &quot;same-origin&quot;, [&quot;a=1&quot;]);
-cookies(&quot;Same-origin mode: 2 cookies&quot;, &quot;same-origin&quot;, &quot;same-origin&quot;, [&quot;b=2&quot;, &quot;c=3&quot;]);
-
-done();
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialscookiesworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapicredentialsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,9 +15,5 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.js
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies-worker.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.html
-/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/authentication-basic.any.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/credentials/cookies.any.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadersheadersidlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-idl-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-idl-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-idl-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -10,9 +10,9 @@
</span><span class="cx"> PASS Headers interface: operation has(ByteString) 
</span><span class="cx"> PASS Headers interface: operation set(ByteString,ByteString) 
</span><span class="cx"> FAIL Testing Symbol.iterator property of iterable interface Headers assert_equals: @@iterator function does not have the right name expected &quot;entries&quot; but got &quot;[Symbol.Iterator]&quot;
</span><del>-FAIL Testing pair iterable interface Headers assert_equals: entries method is not the same as @@iterator expected function &quot;function entries() {
</del><ins>+FAIL Testing pair iterable interface Headers assert_equals: entries method is not the same as @@iterator expected function &quot;function [Symbol.Iterator]() {
</ins><span class="cx">     [native code]
</span><del>-}&quot; but got function &quot;function [Symbol.Iterator]() {
</del><ins>+}&quot; but got function &quot;function entries() {
</ins><span class="cx">     [native code]
</span><span class="cx"> }&quot;
</span><span class="cx"> PASS Headers interface: operation entries() 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Headers object no longer has a getAll() method 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+test(() =&gt; {
+  assert_false(&quot;getAll&quot; in new Headers)
+  assert_false(&quot;getAll&quot; in Headers.prototype)
+}, &quot;Headers object no longer has a getAll() method&quot;)
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiheadershistoricalworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -25,3 +25,4 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-normalize.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-record.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/headers-structure.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/fetch/api/headers/historical.any.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectcountcrossoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> 
</span><del>-FAIL Redirect 20 times, last redirection to cross-origin promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Redirect 21 times, last redirection to cross-origin 
-FAIL Redirect 20 times, going to cross-origin after 10 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Redirect 21 times, going to cross-origin after 10 
-FAIL Redirect 20 times, last redirection to cross-origin with preflight promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Redirect 21 times, last redirection to cross-origin with preflight 
-PASS Redirect 20 times, going to cross-origin after 10 with preflight 
-PASS Redirect 21 times, going to cross-origin after 10 with preflight 
</del><ins>+FAIL Redirect 20 times, last redirection to cross-origin assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, last redirection to cross-origin assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Redirect 20 times, going to cross-origin after 10 assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, going to cross-origin after 10 assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Redirect 20 times, last redirection to cross-origin with preflight assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, last redirection to cross-origin with preflight assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Redirect 20 times, going to cross-origin after 10 with preflight assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, going to cross-origin after 10 with preflight assert_unreached: Should have rejected: undefined Reached unreachable code
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiredirectredirectcountcrossoriginworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,10 +1,10 @@
</span><span class="cx"> 
</span><del>-FAIL Redirect 20 times, last redirection to cross-origin promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Redirect 21 times, last redirection to cross-origin 
-FAIL Redirect 20 times, going to cross-origin after 10 promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Redirect 21 times, going to cross-origin after 10 
-FAIL Redirect 20 times, last redirection to cross-origin with preflight promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS Redirect 21 times, last redirection to cross-origin with preflight 
-PASS Redirect 20 times, going to cross-origin after 10 with preflight 
-PASS Redirect 21 times, going to cross-origin after 10 with preflight 
</del><ins>+FAIL Redirect 20 times, last redirection to cross-origin assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, last redirection to cross-origin assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Redirect 20 times, going to cross-origin after 10 assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, going to cross-origin after 10 assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Redirect 20 times, last redirection to cross-origin with preflight assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, last redirection to cross-origin with preflight assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL Redirect 20 times, going to cross-origin after 10 with preflight assert_equals: Response's status is 200 expected 200 but got 404
+FAIL Redirect 21 times, going to cross-origin after 10 with preflight assert_unreached: Should have rejected: undefined Reached unreachable code
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestcacheonlyifcachedexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt (215163 => 215164)</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-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-cache-only-if-cached-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,16 +0,0 @@
</span><del>-
-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 
-PASS RequestCache &quot;only-if-cached&quot; mode checks the cache for previously cached content and avoids revalidation for stale responses with Last-Modified and stale response 
-PASS RequestCache &quot;only-if-cached&quot; mode checks the cache for previously cached content and avoids revalidation for fresh responses with Etag and fresh response 
-PASS RequestCache &quot;only-if-cached&quot; mode checks the cache for previously cached content and avoids revalidation for fresh responses with Last-Modified and fresh response 
-PASS RequestCache &quot;only-if-cached&quot; mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Etag and fresh response 
-PASS RequestCache &quot;only-if-cached&quot; mode checks the cache for previously cached content and does not go to the network if a cached response is not found with Last-Modified and fresh response 
-FAIL RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) uses cached same-origin redirects to same-origin content with Etag and fresh response promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) uses cached same-origin redirects to same-origin content with Last-Modified and fresh response promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) uses cached same-origin redirects to same-origin content with Etag and stale response promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-FAIL RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) uses cached same-origin redirects to same-origin content with Last-Modified and stale response promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
-PASS RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) does not follow redirects across origins and rejects with Etag and fresh response 
-PASS RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) does not follow redirects across origins and rejects with Last-Modified and fresh response 
-PASS RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) does not follow redirects across origins and rejects with Etag and stale response 
-PASS RequestCache &quot;only-if-cached&quot; (with &quot;same-origin&quot;) does not follow redirects across origins and rejects with Last-Modified and stale response 
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit003subexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Check request values when initialized from Request 
</span><span class="cx"> PASS Check request values when initialized from Request and init values 
</span><del>-FAIL Check request values when initialized from url string assert_equals: Check referrer attribute expected &quot;http://localhost:8800/&quot; but got &quot;about:client&quot;
</del><ins>+PASS Check request values when initialized from url string 
</ins><span class="cx"> PASS Check request values when initialized from url and init values 
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapirequestrequestinit003subhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/request/request-init-003.sub.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> 
</span><span class="cx">       var expectedDefault = {&quot;method&quot; : &quot;GET&quot;,
</span><span class="cx">                              &quot;url&quot; : location.href,
</span><del>-                             &quot;referrer&quot; : &quot;http://{{host}}:{{ports[http][0]}}/&quot;,
</del><ins>+                             &quot;referrer&quot; : &quot;about:client&quot;,
</ins><span class="cx">                              &quot;referrerPolicy&quot; : &quot;&quot;,
</span><span class="cx">                              &quot;mode&quot; : &quot;cors&quot;,
</span><span class="cx">                              &quot;credentials&quot; : &quot;omit&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchapiresourcesredirectcountpy"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/redirect-count.py (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/redirect-count.py        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/api/resources/redirect-count.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,62 +0,0 @@
</span><del>-from urllib import urlencode
-from urlparse import urlparse
-
-def main(request, response):
-    stashed_data = {'count': 0, 'preflight': &quot;0&quot;}
-    status = 302
-    headers = [(&quot;Content-Type&quot;, &quot;text/plain&quot;),
-               (&quot;Cache-Control&quot;, &quot;no-cache&quot;),
-               (&quot;Pragma&quot;, &quot;no-cache&quot;),
-               (&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;)]
-    token = None
-
-    if &quot;token&quot; in request.GET:
-        token = request.GET.first(&quot;token&quot;)
-        data = request.server.stash.take(token)
-        if data:
-            stashed_data = data
-
-    if request.method == &quot;OPTIONS&quot;:
-        if &quot;allow_headers&quot; in request.GET:
-            headers.append((&quot;Access-Control-Allow-Headers&quot;, request.GET['allow_headers']))
-        stashed_data['preflight'] = &quot;1&quot;
-        #Preflight is not redirected: return 200
-        if not &quot;redirect_preflight&quot; in request.GET:
-            if token:
-              request.server.stash.put(request.GET.first(&quot;token&quot;), stashed_data)
-            return 200, headers, &quot;&quot;
-
-    if &quot;redirect_status&quot; in request.GET:
-        status = int(request.GET['redirect_status'])
-
-    stashed_data['count'] += 1
-
-    is_final_redirection = False
-    if token:
-        request.server.stash.put(request.GET.first(&quot;token&quot;), stashed_data)
-        if &quot;max_count&quot; in request.GET:
-            max_count =  int(request.GET['max_count'])
-            #stop redirecting and return count
-            if stashed_data['count'] &gt; max_count:
-                if not &quot;location&quot; in request.GET:
-                    # -1 because the last is not a redirection
-                    return 200, headers, str(stashed_data['count'] - 1)
-                # After max_count, let's go to the final location.
-                headers.append((&quot;Location&quot;, request.GET['location']))
-                is_final_redirection = True
-
-    if not is_final_redirection:
-        # Let's redirect to the same URL except for count parameter
-        url = request.url.split(&quot;?&quot;)[0];
-        scheme = urlparse(request.url).scheme
-        if scheme == &quot;&quot; or scheme == &quot;http&quot; or scheme == &quot;https&quot;:
-            #keep url parameters in location
-            url_parameters = {}
-            for item in request.GET.items():
-                if item[0] != &quot;count&quot;:
-                    url_parameters[item[0]] = item[1][0]
-            #make sure location changes during redirection loop
-            url += &quot;?count=&quot; + str(stashed_data['count']) + &quot;&amp;&quot; + urlencode(url_parameters)
-        headers.append((&quot;Location&quot;, url))
-
-    return status, headers, &quot;&quot;
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcache304updateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS HTTP cache updates returned headers from a Last-Modified 304. 
+PASS HTTP cache updates stored headers from a Last-Modified 304. 
+PASS HTTP cache updates returned headers from a ETag 304. 
+PASS HTTP cache updates stored headers from a ETag 304. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcache304updatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/304-update.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,124 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - 304 Updates&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      {
+        name: 'HTTP cache updates returned headers from a Last-Modified 304.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Test-Header&quot;, &quot;A&quot;]
+            ]
+          },
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-3000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ],
+            expected_type: &quot;lm_validated&quot;,
+            expected_response_headers: [
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ]
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache updates stored headers from a Last-Modified 304.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Test-Header&quot;, &quot;A&quot;]
+            ]
+          },
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(3000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ],
+            expected_type: &quot;lm_validated&quot;,
+            expected_response_headers: [
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;cached&quot;,
+            expected_response_headers: [
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ]
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache updates returned headers from a ETag 304.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-5000)],
+              [&quot;ETag&quot;, &quot;ABC&quot;],
+              [&quot;Test-Header&quot;, &quot;A&quot;]
+            ]
+          },
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-3000)],
+              [&quot;ETag&quot;, &quot;ABC&quot;],
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ],
+            expected_type: &quot;etag_validated&quot;,
+            expected_response_headers: [
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ]
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache updates stored headers from a ETag 304.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-5000)],
+              [&quot;ETag&quot;, &quot;DEF&quot;],
+              [&quot;Test-Header&quot;, &quot;A&quot;]
+            ]
+          },
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(3000)],
+              [&quot;ETag&quot;, &quot;DEF&quot;],
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ],
+            expected_type: &quot;etag_validated&quot;,
+            expected_response_headers: [
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;cached&quot;,
+            expected_response_headers: [
+              [&quot;Test-Header&quot;, &quot;B&quot;]
+            ]
+          }
+        ]
+      },
+    ];
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheREADMEmd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/README.md (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/README.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/README.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+## HTTP Caching Tests
+
+These tests cover HTTP-specified behaviours for caches, primarily from
+[RFC7234](http://httpwg.org/specs/rfc7234.html), but as seen through the
+lens of Fetch.
+
+A few notes:
+
+* By its nature, caching is optional; some tests expecting a response to be
+  cached might fail because the client chose not to cache it, or chose to
+  race the cache with a network request.
+
+* Likewise, some tests might fail because there is a separate document-level
+  cache that's ill-defined; see [this
+  issue](https://github.com/whatwg/fetch/issues/354).
+
+* [Partial content tests](partial.html) (a.k.a. Range requests) are not specified
+  in Fetch; tests are included here for interest only.
+
+* Some browser caches will behave differently when reloading /
+  shift-reloading, despite the `cache mode` staying the same.
+
+* At the moment, Edge doesn't appear to using HTTP caching in conjunction
+  with Fetch at all.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheccrequestexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0. 
+FAIL HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1. assert_equals: Response used expected 2 but got 1
+FAIL HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness. assert_equals: Response used expected 2 but got 1
+PASS HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use. 
+PASS HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use. 
+FAIL HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher. assert_equals: Response used expected 2 but got 1
+FAIL HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher. assert_equals: Response used expected 2 but got 1
+PASS HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache. 
+PASS HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache. 
+PASS HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache. 
+FAIL HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store. assert_equals: Response used expected 2 but got 1
+FAIL HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached. promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheccrequesthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,212 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Cache-Control Request Directives&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&quot;&gt;
+    &lt;meta name=&quot;timeout&quot; content=&quot;long&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      {
+        name: &quot;HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0.&quot;,
+        requests: [
+          {
+            template: &quot;fresh&quot;,
+            pause_after: true
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=0&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1.&quot;,
+        requests: [
+          {
+            template: &quot;fresh&quot;,
+            pause_after: true
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=1&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+              [&quot;Age&quot;, &quot;1800&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=600&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=1&quot;]
+            ],
+            pause_after: true
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-stale=1000&quot;]
+            ],
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=1500&quot;],
+              [&quot;Age&quot;, &quot;2000&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-stale=1000&quot;]
+            ],
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=1500&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;min-fresh=2000&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=1500&quot;],
+              [&quot;Age&quot;, &quot;1000&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;min-fresh=1000&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;no-cache&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+              [&quot;Last-Modified&quot;, http_date(-10000)]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;no-cache&quot;]
+            ],
+            expected_type: &quot;lm_validate&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+              [&quot;ETag&quot;, http_content(&quot;abc&quot;)]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;no-cache&quot;]
+            ],
+            expected_type: &quot;etag_validate&quot;,
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store.&quot;,
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;no-store&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached.',
+        requests: [
+          {
+            request_headers: [
+              [&quot;Cache-Control&quot;, &quot;only-if-cached&quot;]
+            ],
+            expected_status: 504
+          }
+        ]
+      }
+    ];
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachefreshnessexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+PASS HTTP cache reuses a response with a future Expires. 
+PASS HTTP cache does not reuse a response with a past Expires. 
+PASS HTTP cache does not reuse a response with a present Expires. 
+PASS HTTP cache does not reuse a response with an invalid Expires. 
+PASS HTTP cache reuses a response with positive Cache-Control: max-age. 
+PASS HTTP cache does not reuse a response with Cache-Control: max-age=0. 
+PASS HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires. 
+PASS HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires. 
+PASS HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires. 
+PASS HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age. 
+PASS HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime. 
+PASS HTTP cache does not store a response with Cache-Control: no-store. 
+PASS HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires. 
+PASS HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use. 
+PASS HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachefreshnesshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,226 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Freshness&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&quot;&gt;
+    &lt;meta name=&quot;timeout&quot; content=&quot;long&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      // response directives
+      {
+        name: 'HTTP cache reuses a response with a future Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(30*24*60*60)]
+            ]
+          },
+          {
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse a response with a past Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(-30*24*60*60)]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse a response with a present Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, http_date(0)]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse a response with an invalid Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Expires&quot;, &quot;0&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache reuses a response with positive Cache-Control: max-age.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse a response with Cache-Control: max-age=0.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=0&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache reuses a response with positive Cache-Control: max-age and a past Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+              ['Expires', http_date(-10000)]
+            ]
+          },
+          {
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache reuses a response with positive Cache-Control: max-age and an invalid Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+              ['Expires', '0']
+            ]
+          },
+          {
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse a response with Cache-Control: max-age=0 and a future Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=0&quot;],
+              ['Expires', http_date(10000)]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not prefer Cache-Control: s-maxage over Cache-Control: max-age.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=1, s-maxage=3600&quot;]
+            ],
+            pause_after: true,
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse a response when the Age header is greater than its freshness lifetime.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=3600&quot;],
+              [&quot;Age&quot;, &quot;12000&quot;]
+            ],
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not store a response with Cache-Control: no-store.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;no-store&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not store a response with Cache-Control: no-store, even with max-age and Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=10000, no-store&quot;],
+              ['Expires', http_date(10000)]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;no-cache&quot;],
+              ['ETag', 'abcd']
+            ]
+          },
+          {
+            expected_type: &quot;etag_validated&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache stores a response with Cache-Control: no-cache, but revalidates upon use, even with max-age and Expires.',
+        requests: [
+          {
+            response_headers: [
+              [&quot;Cache-Control&quot;, &quot;max-age=10000, no-cache&quot;],
+              ['Expires', http_date(10000)],
+              ['ETag', 'abcd']
+            ]
+          },
+          {
+            expected_type: &quot;etag_validated&quot;,
+          }
+        ]
+      },
+    ];
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheheuristicexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+
+FAIL HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present. 
+PASS HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheheuristichtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,104 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Heuristic Freshness&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&quot;&gt;
+    &lt;meta name=&quot;timeout&quot; content=&quot;long&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      {
+        name: 'HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present.',
+        requests: [
+          {
+            response_status: [299, &quot;Whatever&quot;],
+            response_headers: [
+              ['Last-Modified', http_date(-3 * 100)],
+              ['Cache-Control', 'public']
+            ],
+          },
+          {
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present.',
+        requests: [
+          {
+            response_status: [299, &quot;Whatever&quot;],
+            response_headers: [
+              ['Last-Modified', http_date(-3 * 100)],
+              ['Cache-Control', 'public']
+            ],
+          },
+          {
+            expected_type: &quot;not_cached&quot;,
+          }
+        ]
+      }
+    ];
+
+    function check_status(status) {
+      var succeed = status[0];
+      var code = status[1];
+      var phrase = status[2];
+      var body = status[3];
+      if (body === undefined) {
+        body = http_content(code);
+      }
+      var expected_type = &quot;not_cached&quot;;
+      var desired = &quot;does not use&quot;
+      if (succeed === true) {
+        expected_type = &quot;cached&quot;;
+        desired = &quot;reuses&quot;;
+      }
+      tests.push(
+        {
+          name: 'HTTP cache ' + desired + ' a ' + code + ' ' + phrase + ' response with Last-Modified based upon heuristic freshness.',
+          requests: [
+            {
+              response_status: [code, phrase],
+              response_headers: [
+                ['Last-Modified', http_date(-3 * 100)]
+              ],
+              response_body: body,
+            },
+            {
+              expected_type: expected_type,
+              response_status: [code, phrase],
+              response_body: body,
+            }
+          ]
+        }
+      )
+    }
+    [
+      [true, 200, 'OK'],
+      [true, 203, &quot;Non-Authoritative Information&quot;],
+      [true, 204, &quot;No Content&quot;, &quot;&quot;],
+      [true, 404, &quot;Not Found&quot;],
+      [true, 405, &quot;Method Not Allowed&quot;],
+      [true, 410, &quot;Gone&quot;],
+      [true, 414, &quot;URI Too Long&quot;],
+      [true, 501, &quot;Not Implemented&quot;]
+    ].forEach(check_status);
+    [
+      [false, 201, 'Created'],
+      [false, 202, &quot;Accepted&quot;],
+      [false, 403, &quot;Forbidden&quot;],
+      [false, 502, &quot;Bad Gateway&quot;],
+      [false, 503, &quot;Service Unavailable&quot;],
+      [false, 504, &quot;Gateway Timeout&quot;],
+    ].forEach(check_status);
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachehttpcachejs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/http-cache.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/http-cache.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/http-cache.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,285 @@
</span><ins>+/**
+ * Each test run gets its own URL and randomized content and operates independently.
+ *
+ * Tests are an array of objects, each representing a request to make and check.
+ * The cache.py server script stashes an entry containing observed headers for
+ * each request it receives.  When the test fetches have run, this state is retrieved
+ * and the expected_* lists are checked, including their length.
+ *
+ * Request object keys:
+ * - template - A template object for the request, by name -- see &quot;templates&quot; below.
+ * - request_method - A string containing the HTTP method to be used.
+ * - request_headers - An array of [header_name_string, header_value_string] arrays to
+ *                     emit in the request.
+ * - request_body - A string to use as the request body.
+ * - mode - The mode string to pass to fetch().
+ * - credentials - The credentials string to pass to fetch().
+ * - cache - The cache string to pass to fetch().
+ * - pause_after - Boolean controlling a 3-second pause after the request completes.
+ * - response_status - A [number, string] array containing the HTTP status code
+ *                     and phrase to return.
+ * - response_headers - An array of [header_name_string, header_value_string] arrays to
+ *                      emit in the response. These values will also be checked like
+ *                      expected_response_headers, unless there is a third value that is
+ *                      false.
+ * - response_body - String to send as the response body. If not set, it will contain
+ *                   the test identifier.
+ * - expected_type - One of [&quot;cached&quot;, &quot;not_cached&quot;, &quot;lm_validate&quot;, &quot;etag_validate&quot;, &quot;error&quot;]
+ * - expected_status - A number representing a HTTP status code to check the response for.
+ *                     If not set, the value of response_status[0] will be used; if that
+ *                     is not set, 200 will be used.
+ * - expected_request_headers - An array of [header_name_string, header_value_string] representing
+ *                               headers to check the request for.
+ * - expected_response_headers - An array of [header_name_string, header_value_string] representing
+ *                               headers to check the response for. See also response_headers.
+ * - expected_response_text - A string to check the response body against.
+ */
+
+function make_url(uuid, requests, idx) {
+  var arg = &quot;&quot;;
+  if (&quot;query_arg&quot; in requests[idx]) {
+    arg = &quot;&amp;target=&quot; + requests[idx].query_arg;
+  }
+  return &quot;resources/http-cache.py?token=&quot; + uuid + &quot;&amp;info=&quot; + btoa(JSON.stringify(requests)) + arg;
+}
+
+function server_state(uuid) {
+  return fetch(&quot;resources/http-cache.py?querystate&amp;token=&quot; + uuid)
+    .then(function(response) {
+      return response.text();
+    }).then(function(text) {
+      // null will be returned if the server never received any requests
+      // for the given uuid.  Normalize that to an empty list consistent
+      // with our representation.
+      return JSON.parse(text) || [];
+    });
+}
+
+
+templates = {
+  &quot;fresh&quot;: {
+    &quot;response_headers&quot;: [
+      ['Expires', http_date(100000)],
+      ['Last-Modified', http_date(0)]
+    ]
+  },
+  &quot;stale&quot;: {
+    &quot;response_headers&quot;: [
+      ['Expires', http_date(-5000)],
+      ['Last-Modified', http_date(-100000)]
+    ]
+  },
+  &quot;lcl_response&quot;: {
+    &quot;response_headers&quot;: [
+      ['Location', &quot;location_target&quot;],
+      ['Content-Location', &quot;content_location_target&quot;]
+    ]
+  },
+  &quot;location&quot;: {
+    &quot;query_arg&quot;: &quot;location_target&quot;,
+    &quot;response_headers&quot;: [
+      ['Expires', http_date(100000)],
+      ['Last-Modified', http_date(0)]
+    ]
+  },
+  &quot;content_location&quot;: {
+    &quot;query_arg&quot;: &quot;content_location_target&quot;,
+    &quot;response_headers&quot;: [
+      ['Expires', http_date(100000)],
+      ['Last-Modified', http_date(0)]
+    ]
+  }
+}
+
+function make_test(raw_requests) {
+  var requests = [];
+  for (var i = 0; i &lt; raw_requests.length; i++) {
+    var request = raw_requests[i];
+    if (&quot;template&quot; in request) {
+      var template = templates[request[&quot;template&quot;]];
+      for (var member in template) {
+        if (! request.hasOwnProperty(member)) {
+          request[member] = template[member];
+        }
+      }
+    }
+    if (&quot;expected_type&quot; in request &amp;&amp; request.expected_type === &quot;cached&quot;) {
+      // requests after one that's expected to be cached will get out of sync
+      // with the server; not currently supported.
+      if (raw_requests.length &gt; i + 1) {
+        assert_unreached(&quot;Making requests after something is expected to be cached.&quot;);
+      }
+    }
+    requests.push(request);
+  }
+  return function(test) {
+    var uuid = token();
+    var fetch_functions = [];
+    for (var i = 0; i &lt; requests.length; ++i) {
+      fetch_functions.push({
+        code: function(idx) {
+          var init = {};
+          var url = make_url(uuid, requests, idx);
+          var config = requests[idx];
+          if (&quot;request_method&quot; in config) {
+            init.method = config[&quot;request_method&quot;];
+          }
+          if (&quot;request_headers&quot; in config) {
+            init.headers = config[&quot;request_headers&quot;];
+          }
+          if (&quot;request_body&quot; in config) {
+            init.body = config[&quot;request_body&quot;];
+          }
+          if (&quot;mode&quot; in config) {
+            init.mode = config[&quot;mode&quot;];
+          }
+          if (&quot;credentials&quot; in config) {
+            init.mode = config[&quot;credentials&quot;];
+          }
+          if (&quot;cache&quot; in config) {
+            init.cache = config[&quot;cache&quot;];
+          }
+          return fetch(url, init)
+            .then(function(response) {
+              var res_num = parseInt(response.headers.get(&quot;Server-Request-Count&quot;));
+              var req_num = idx + 1;
+              if (&quot;expected_type&quot; in config) {
+                if (config.expected_type === &quot;error&quot;) {
+                  assert_true(false, &quot;Request &quot; + req_num + &quot; should have been an error&quot;);
+                  return [response.text(), response_status];
+                }
+                if (config.expected_type === &quot;cached&quot;) {
+                  assert_less_than(res_num, req_num, &quot;Response used&quot;);
+                }
+                if (config.expected_type === &quot;not_cached&quot;) {
+                  assert_equals(res_num, req_num, &quot;Response used&quot;);
+                }
+              }
+              if (&quot;expected_status&quot; in config) {
+                assert_equals(response.status, config.expected_status, &quot;Response status&quot;);
+              } else if (&quot;response_status&quot; in config) {
+                  assert_equals(response.status, config.response_status[0], &quot;Response status&quot;);
+              } else {
+                assert_equals(response.status, 200, &quot;Response status&quot;)
+              }
+              if (&quot;response_headers&quot; in config) {
+                config.response_headers.forEach(function(header) {
+                  if (header.len &lt; 3 || header[2] === true) {
+                    assert_equals(response.headers.get(header[0]), header[1], &quot;Response header&quot;)
+                  }
+                })
+              }
+              if (&quot;expected_response_headers&quot; in config) {
+                config.expected_response_headers.forEach(function(header) {
+                  assert_equals(response.headers.get(header[0]), header[1], &quot;Response header&quot;);
+                });
+              }
+              return response.text();
+            }).then(function(res_body) {
+              if (&quot;expected_response_text&quot; in config) {
+                assert_equals(res_body, config.expected_response_text, &quot;Response body&quot;);
+              } else if (&quot;response_body&quot; in config) {
+                assert_equals(res_body, config.response_body, &quot;Response body&quot;);
+              } else {
+                assert_equals(res_body, uuid, &quot;Response body&quot;);
+              }
+            }, function(reason) {
+              if (&quot;expected_type&quot; in config &amp;&amp; config.expected_type === &quot;error&quot;) {
+                assert_throws(new TypeError(), function() { throw reason; });
+              } else {
+                throw reason;
+              }
+            });
+        },
+        pause_after: &quot;pause_after&quot; in requests[i] &amp;&amp; true || false
+      });
+    }
+
+    function pause() {
+      return new Promise(function(resolve, reject) {
+              step_timeout(function() {
+          return resolve()
+        }, 3000);
+      });
+    }
+
+    // TODO: it would be nice if this weren't serialised.
+    var idx = 0;
+    function run_next_step() {
+      if (fetch_functions.length) {
+        var fetch_function = fetch_functions.shift();
+        if (fetch_function.pause_after &gt; 0) {
+          return fetch_function.code(idx++)
+            .then(pause)
+            .then(run_next_step);
+        } else {
+          return fetch_function.code(idx++)
+            .then(run_next_step);
+        }
+      } else {
+        return Promise.resolve();
+      }
+    }
+
+    return run_next_step()
+      .then(function() {
+        // Now, query the server state
+        return server_state(uuid);
+      }).then(function(state) {
+        for (var i = 0; i &lt; requests.length; ++i) {
+          var expected_validating_headers = []
+          var req_num = i + 1;
+          if (&quot;expected_type&quot; in requests[i]) {
+            if (requests[i].expected_type === &quot;cached&quot;) {
+              assert_true(state.length &lt;= i, &quot;cached response used for request &quot; + req_num);
+              continue; // the server will not see the request, so we can't check anything else.
+            }
+            if (requests[i].expected_type === &quot;not_cached&quot;) {
+              assert_false(state.length &lt;= i, &quot;cached response used for request &quot; + req_num);
+            }
+            if (requests[i].expected_type === &quot;etag_validated&quot;) {
+              expected_validating_headers.push('if-none-match')
+            }
+            if (requests[i].expected_type === &quot;lm_validated&quot;) {
+              expected_validating_headers.push('if-modified-since')
+            }
+          }
+          for (var j in expected_validating_headers) {
+              var vhdr = expected_validating_headers[j];
+            assert_own_property(state[i].request_headers, vhdr, &quot; has &quot; + vhdr + &quot; request header&quot;);
+          }
+          if (&quot;expected_request_headers&quot; in requests[i]) {
+            var expected_request_headers = requests[i].expected_request_headers;
+            for (var j = 0; j &lt; expected_request_headers.length; ++j) {
+              var expected_header = expected_request_headers[j];
+              assert_equals(state[i].request_headers[expected_header[0].toLowerCase()],
+                            expected_header[1]);
+            }
+          }
+        }
+      });
+  };
+}
+
+
+function run_tests(tests)
+{
+  tests.forEach(function(info) {
+    promise_test(make_test(info.requests), info.name);
+  });
+}
+
+function http_date(delta) {
+  return new Date(Date.now() + (delta * 1000)).toGMTString();
+}
+
+var content_store = {};
+function http_content(cs_key) {
+  if (cs_key in content_store) {
+    return content_store[cs_key];
+  } else {
+    var content = btoa(Math.random() * Date.now());
+    content_store[cs_key] = content;
+    return content;
+  }
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheinvalidateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+PASS HTTP cache invalidates after a successful response from a POST 
+FAIL HTTP cache does not invalidate after a failed response from an unsafe request assert_less_than: Response used expected a number less than 3 but got 3
+PASS HTTP cache invalidates after a successful response from a PUT 
+PASS HTTP cache invalidates after a successful response from a DELETE 
+PASS HTTP cache invalidates after a successful response from an unknown method 
+FAIL HTTP cache invalidates Location URL after a successful response from a POST assert_equals: Response used expected 3 but got 1
+PASS HTTP cache does not invalidate Location URL after a failed response from an unsafe request 
+FAIL HTTP cache invalidates Location URL after a successful response from a PUT assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Location URL after a successful response from a DELETE assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Location URL after a successful response from an unknown method assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Content-Location URL after a successful response from a POST assert_equals: Response used expected 3 but got 1
+PASS HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request 
+FAIL HTTP cache invalidates Content-Location URL after a successful response from a PUT assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Content-Location URL after a successful response from a DELETE assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Content-Location URL after a successful response from an unknown method assert_equals: Response used expected 3 but got 1
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheinvalidatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,245 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Invalidation&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      {
+        name: 'HTTP cache invalidates after a successful response from a POST',
+        requests: [
+          {
+            template: &quot;fresh&quot;
+          }, {
+            request_method: &quot;POST&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not invalidate after a failed response from an unsafe request',
+        requests: [
+          {
+            template: &quot;fresh&quot;
+          }, {
+            request_method: &quot;POST&quot;,
+            request_body: &quot;abc&quot;,
+            response_status: [500, &quot;Internal Server Error&quot;]
+          }, {
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates after a successful response from a PUT',
+        requests: [
+          {
+            template: &quot;fresh&quot;
+          }, {
+            template: &quot;fresh&quot;,
+            request_method: &quot;PUT&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates after a successful response from a DELETE',
+        requests: [
+          {
+            template: &quot;fresh&quot;
+          }, {
+            request_method: &quot;DELETE&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates after a successful response from an unknown method',
+        requests: [
+          {
+            template: &quot;fresh&quot;
+          }, {
+            request_method: &quot;FOO&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+
+
+      {
+        name: 'HTTP cache invalidates Location URL after a successful response from a POST',
+        requests: [
+          {
+            template: &quot;location&quot;
+          }, {
+            request_method: &quot;POST&quot;,
+            request_body: &quot;abc&quot;,
+            template: &quot;lcl_response&quot;
+          }, {
+            template: &quot;location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not invalidate Location URL after a failed response from an unsafe request',
+        requests: [
+          {
+            template: &quot;location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;POST&quot;,
+            request_body: &quot;abc&quot;,
+            response_status: [500, &quot;Internal Server Error&quot;]
+          }, {
+            template: &quot;location&quot;,
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates Location URL after a successful response from a PUT',
+        requests: [
+          {
+            template: &quot;location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;PUT&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            template: &quot;location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates Location URL after a successful response from a DELETE',
+        requests: [
+          {
+            template: &quot;location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;DELETE&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            template: &quot;location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates Location URL after a successful response from an unknown method',
+        requests: [
+          {
+            template: &quot;location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;FOO&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            template: &quot;location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+
+
+
+      {
+        name: 'HTTP cache invalidates Content-Location URL after a successful response from a POST',
+        requests: [
+          {
+            template: &quot;content_location&quot;
+          }, {
+            request_method: &quot;POST&quot;,
+            request_body: &quot;abc&quot;,
+            template: &quot;lcl_response&quot;
+          }, {
+            template: &quot;content_location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request',
+        requests: [
+          {
+            template: &quot;content_location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;POST&quot;,
+            request_body: &quot;abc&quot;,
+            response_status: [500, &quot;Internal Server Error&quot;]
+          }, {
+            template: &quot;content_location&quot;,
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates Content-Location URL after a successful response from a PUT',
+        requests: [
+          {
+            template: &quot;content_location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;PUT&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            template: &quot;content_location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates Content-Location URL after a successful response from a DELETE',
+        requests: [
+          {
+            template: &quot;content_location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;DELETE&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            template: &quot;content_location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache invalidates Content-Location URL after a successful response from an unknown method',
+        requests: [
+          {
+            template: &quot;content_location&quot;
+          }, {
+            template: &quot;lcl_response&quot;,
+            request_method: &quot;FOO&quot;,
+            request_body: &quot;abc&quot;,
+          }, {
+            template: &quot;content_location&quot;,
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      }
+
+    ];
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachepartialexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL HTTP cache stores partial content and reuses it. assert_equals: Response body expected &quot;3198c063-b8ad-4992-8462-70bf7483cc64&quot; but got &quot;01234&quot;
+FAIL HTTP cache stores complete response and serves smaller ranges from it. assert_less_than: Response used expected a number less than 2 but got 2
+FAIL HTTP cache stores partial response and serves smaller ranges from it. assert_less_than: Response used expected a number less than 2 but got 2
+FAIL HTTP cache stores partial content and completes it. assert_equals: expected (string) &quot;bytes=5-&quot; but got (undefined) undefined
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachepartialhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,109 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Partial Content&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&quot;&gt;
+    &lt;meta name=&quot;timeout&quot; content=&quot;long&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      {
+        name: 'HTTP cache stores partial content and reuses it.',
+        requests: [
+          {
+            request_headers: [
+              ['Range', &quot;bytes=-5&quot;]
+            ],
+            response_status: [206, &quot;Partial Content&quot;],
+            response_headers: [
+              ['Cache-Control', 'max-age=3600'],
+              ['Content-Range', 'bytes 0-4/10']
+            ],
+            response_body: &quot;01234&quot;,
+            expected_request_headers: [
+              ['Range', &quot;bytes=-5&quot;]
+            ],
+          },
+          {
+            request_headers: [
+              ['Range', &quot;bytes=-5&quot;]
+            ],
+            expected_type: &quot;cached&quot;,
+            expected_status: 206
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache stores complete response and serves smaller ranges from it.',
+        requests: [
+          {
+            response_headers: [
+              ['Cache-Control', 'max-age=3600'],
+            ],
+            response_body: &quot;01234567890&quot;,
+          },
+          {
+            request_headers: [
+              ['Range', &quot;bytes=-1&quot;]
+            ],
+            expected_type: &quot;cached&quot;,
+            expected_response_text: &quot;01&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache stores partial response and serves smaller ranges from it.',
+        requests: [
+          {
+            request_headers: [
+              ['Range', &quot;bytes=-5&quot;]
+            ],
+            response_status: [206, &quot;Partial Content&quot;],
+            response_headers: [
+              ['Cache-Control', 'max-age=3600'],
+              ['Content-Range', 'bytes 0-4/10']
+            ],
+            response_body: &quot;01234&quot;,
+          },
+          {
+            request_headers: [
+              ['Range', &quot;bytes=-1&quot;]
+            ],
+            expected_type: &quot;cached&quot;,
+            expected_response_text: &quot;01&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache stores partial content and completes it.',
+        requests: [
+          {
+            request_headers: [
+              ['Range', &quot;bytes=-5&quot;]
+            ],
+            response_status: [206, &quot;Partial Content&quot;],
+            response_headers: [
+              ['Cache-Control', 'max-age=3600'],
+              ['Content-Range', 'bytes 0-4/10']
+            ],
+            response_body: &quot;01234&quot;,
+          },
+          {
+            expected_request_headers: [
+              [&quot;range&quot;, &quot;bytes=5-&quot;]
+            ]
+          }
+        ]
+      },
+    ];
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheresourceshttpcachepy"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/http-cache.py (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/http-cache.py                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/http-cache.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+from json import JSONEncoder, JSONDecoder
+from base64 import b64decode
+
+def main(request, response):
+    uuid = request.GET.first(&quot;token&quot;, None)
+    if &quot;querystate&quot; in request.GET:
+        response.headers.set(&quot;Content-Type&quot;, &quot;text/plain&quot;)
+        return JSONEncoder().encode(request.server.stash.take(uuid))
+
+    server_state = request.server.stash.take(uuid)
+    if not server_state:
+        server_state = []
+
+    requests = JSONDecoder().decode(b64decode(request.GET.first(&quot;info&quot;, &quot;&quot;)))
+    config = requests[len(server_state)]
+
+    state = dict()
+    state[&quot;request_method&quot;] = request.method
+    state[&quot;request_headers&quot;] = dict([[h.lower(), request.headers[h]] for h in request.headers])
+    server_state.append(state)
+    request.server.stash.put(uuid, server_state)
+
+    note_headers = ['content-type', 'access-control-allow-origin', 'last-modified', 'etag']
+    noted_headers = {}
+    for header in config.get('response_headers', []):
+        if header[0].lower() in [&quot;location&quot;, &quot;content-location&quot;]: # magic!
+            header[1] = &quot;%s&amp;target=%s&quot; % (request.url, header[1])
+        response.headers.set(header[0], header[1])
+        if header[0].lower() in note_headers:
+            noted_headers[header[0].lower()] = header[1]
+
+    if &quot;access-control-allow-origin&quot; not in noted_headers:
+        response.headers.set(&quot;Access-Control-Allow-Origin&quot;, &quot;*&quot;);
+    if &quot;content-type&quot; not in noted_headers:
+        response.headers.set(&quot;Content-Type&quot;, &quot;text/plain&quot;)
+    response.headers.set(&quot;Server-Request-Count&quot;, len(server_state))
+
+    code, phrase = config.get(&quot;response_status&quot;, [200, &quot;OK&quot;])
+
+    if request.headers.get(&quot;If-Modified-Since&quot;, False) == noted_headers.get('last-modified', True):
+        code, phrase = [304, &quot;Not Modified&quot;]
+    if request.headers.get(&quot;If-None-Match&quot;, False) == noted_headers.get('etag', True):
+        code, phrase = [304, &quot;Not Modified&quot;]
+
+    response.status = (code, phrase)
+
+    content = config.get(&quot;response_body&quot;, uuid)
+    if code in [204, 304]:
+        return &quot;&quot;
+    else:
+        return content
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcacheresourcesw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/resources/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</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/fetch/http-cache/resources/http-cache.py
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachestatusexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+
+PASS HTTP cache goes to the network if it has a stale 200 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 200 response. 
+PASS HTTP cache goes to the network if it has a stale 203 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 203 response. 
+PASS HTTP cache goes to the network if it has a stale 204 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 204 response. 
+PASS HTTP cache goes to the network if it has a stale 299 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 299 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 400 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 400 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 404 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 404 response. 
+PASS HTTP cache goes to the network if it has a stale 410 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 410 response. 
+PASS HTTP cache goes to the network if it has a stale 499 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 499 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 500 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 500 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 502 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 502 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 503 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 503 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 504 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 504 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 599 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 599 response. assert_less_than: Response used expected a number less than 2 but got 2
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachestatushtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Status Codes&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [];
+    function check_status(status) {
+      var code = status[0];
+      var phrase = status[1];
+      var body = status[2];
+      if (body === undefined) {
+        body = http_content(code);
+      }
+      tests.push({
+        name: 'HTTP cache goes to the network if it has a stale ' + code + ' response.',
+        requests: [
+          {
+            template: &quot;stale&quot;,
+            response_status: [code, phrase],
+            response_body: body
+          }, {
+            expected_type: &quot;not_cached&quot;,
+            response_body: body
+          }
+        ]
+      })
+      tests.push({
+        name: 'HTTP cache avoids going to the network if it has a fresh ' + code + ' response.',
+        requests: [
+          {
+            template: &quot;fresh&quot;,
+            response_status: [code, phrase],
+            response_body: body
+          }, {
+            expected_type: &quot;cached&quot;,
+            response_status: [code, phrase],
+            response_body: body
+          }
+        ]
+      })
+    }
+    [
+      [200, 'OK'],
+      [203, &quot;Non-Authoritative Information&quot;],
+      [204, &quot;No Content&quot;, &quot;&quot;],
+      [299, &quot;Whatever&quot;],
+      [400, &quot;Bad Request&quot;],
+      [404, &quot;Not Found&quot;],
+      [410, &quot;Gone&quot;],
+      [499, &quot;Whatever&quot;],
+      [500, &quot;Internal Server Error&quot;],
+      [502, &quot;Bad Gateway&quot;],
+      [503, &quot;Service Unavailable&quot;],
+      [504, &quot;Gateway Timeout&quot;],
+      [599, &quot;Whatever&quot;]
+    ].forEach(check_status);
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachevaryexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+
+PASS HTTP cache reuses Vary response when request matches. 
+PASS HTTP cache doesn't use Vary response when request doesn't match. 
+PASS HTTP cache doesn't use Vary response when request omits variant header. 
+FAIL HTTP cache doesn't invalidate existing Vary response. assert_less_than: Response used expected a number less than 3 but got 3
+PASS HTTP cache doesn't pay attention to headers not listed in Vary. 
+PASS HTTP cache reuses two-way Vary response when request matches. 
+PASS HTTP cache doesn't use two-way Vary response when request doesn't match. 
+PASS HTTP cache doesn't use two-way Vary response when request omits variant header. 
+PASS HTTP cache reuses three-way Vary response when request matches. 
+PASS HTTP cache doesn't use three-way Vary response when request doesn't match. 
+PASS HTTP cache doesn't use three-way Vary response when request omits variant header. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachevaryhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,270 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot;&gt;
+    &lt;title&gt;HTTP Cache - Vary&lt;/title&gt;
+    &lt;meta name=&quot;help&quot; href=&quot;https://fetch.spec.whatwg.org/#request&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;/common/utils.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/common/get-host-info.sub.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;http-cache.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script&gt;
+    var tests = [
+      {
+        name: 'HTTP cache reuses Vary response when request matches.',
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use Vary response when request doesn't match.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;2&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use Vary response when request omits variant header.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't invalidate existing Vary response.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo&quot;]
+            ],
+            response_body: http_content('foo_1')
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;2&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;,
+            response_body: http_content('foo_2'),
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't pay attention to headers not listed in Vary.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Other&quot;, &quot;2&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo&quot;]
+            ],
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Other&quot;, &quot;3&quot;]
+            ],
+            expected_type: &quot;cached&quot;,
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache reuses two-way Vary response when request matches.',
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo, Bar&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;]
+            ],
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use two-way Vary response when request doesn't match.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo, Bar&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;2&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use two-way Vary response when request omits variant header.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo, Bar&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: 'HTTP cache reuses three-way Vary response when request matches.',
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;],
+              [&quot;Baz&quot;, &quot;789&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo, Bar, Baz&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;],
+              [&quot;Baz&quot;, &quot;789&quot;]
+            ],
+            expected_type: &quot;cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use three-way Vary response when request doesn't match.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;],
+              [&quot;Baz&quot;, &quot;789&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo, Bar, Baz&quot;]
+            ]
+          },
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;2&quot;],
+              [&quot;Bar&quot;, &quot;abc&quot;],
+              [&quot;Baz&quot;, &quot;789&quot;]
+            ],
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      },
+      {
+        name: &quot;HTTP cache doesn't use three-way Vary response when request omits variant header.&quot;,
+        requests: [
+          {
+            request_headers: [
+              [&quot;Foo&quot;, &quot;1&quot;],
+              [&quot;Baz&quot;, &quot;789&quot;]
+            ],
+            response_headers: [
+              [&quot;Expires&quot;, http_date(5000)],
+              [&quot;Last-Modified&quot;, http_date(-3000)],
+              [&quot;Vary&quot;, &quot;Foo, Bar, Baz&quot;]
+            ]
+          },
+          {
+            expected_type: &quot;not_cached&quot;
+          }
+        ]
+      }
+    ];
+    run_tests(tests);
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchhttpcachew3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</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/fetch/http-cache/304-update.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/README.md
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/cc-request.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/freshness.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/heuristic.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/http-cache.js
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/invalidate.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/partial.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/status.html
+/LayoutTests/imported/w3c/web-platform-tests/fetch/http-cache/vary.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsfetchnosniffimportscriptsexpectedtxt"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/nosniff/importscripts-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/nosniff/importscripts-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/fetch/nosniff/importscripts-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +0,0 @@
</span><del>-
-FAIL Test importScripts() assert_equals: expected &quot;PASS&quot; but got &quot;FAIL: Content-Type missing&quot;
-
</del></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimebasicanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS self.performance.now() is a function that returns a number 
+PASS self.performance.now() returns a positive number 
+PASS self.performance.now() difference is not negative 
+PASS High resolution time has approximately the right relative magnitude 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimebasicanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimebasicanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+test(function() {
+  assert_true((self.performance !== undefined), &quot;self.performance exists&quot;);
+  assert_equals(typeof self.performance, &quot;object&quot;, &quot;self.performance is an object&quot;);
+  assert_equals((typeof self.performance.now), &quot;function&quot;, &quot;self.performance.now() is a function&quot;);
+  assert_equals(typeof self.performance.now(), &quot;number&quot;, &quot;self.performance.now() returns a number&quot;);
+}, &quot;self.performance.now() is a function that returns a number&quot;);
+
+test(function() {
+  assert_true(self.performance.now() &gt; 0);
+}, &quot;self.performance.now() returns a positive number&quot;);
+
+test(function() {
+    var now1 = self.performance.now();
+    var now2 = self.performance.now();
+    assert_true((now2-now1) &gt;= 0);
+  }, &quot;self.performance.now() difference is not negative&quot;);
+
+async_test(function() {
+  // Check whether the performance.now() method is close to Date() within 30ms (due to inaccuracies)
+  var initial_hrt = self.performance.now();
+  var initial_date = Date.now();
+  this.step_timeout(function() {
+    var final_hrt = self.performance.now();
+    var final_date = Date.now();
+    assert_approx_equals(final_hrt - initial_hrt, final_date - initial_date, 30, 'High resolution time value increased by approximately the same amount as time from date object');
+    this.done();
+  }, 2000);
+}, 'High resolution time has approximately the right relative magnitude');
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS self.performance.now() returns a positive number 
+PASS self.performance.now() difference is not negative 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+test(function() {
+  assert_true(self.performance.now() &gt; 0, &quot;self.performance.now() returns positive numbers&quot;);
+}, &quot;self.performance.now() returns a positive number&quot;, {assert: &quot;The time values returned when calling the now method MUST be monotonically increasing and not subject to system clock adjustments or system clock skew.&quot;});
+
+test(function() {
+    var now1 = self.performance.now();
+    var now2 = self.performance.now();
+    assert_true((now2-now1) &gt;= 0, &quot;self.performance.now() difference is not negative&quot;);
+  },
+  &quot;self.performance.now() difference is not negative&quot;,
+  {
+    assert: &quot;The difference between any two chronologically recorded time values returned from the now method MUST never be negative.&quot;
+  }
+);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshrtimemonotonicclockworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/hr-time/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -16,9 +16,8 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/OWNERS
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.html
-/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.worker.js
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/hr-time/basic.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/idlharness.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/hr-time/monotonic-clock.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/test_cross_frame_start.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/hr-time/window-worker-time-origin.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,4 +1,3 @@
</span><del>-@ayg
</del><span class="cx"> @jdm
</span><span class="cx"> @jgraham
</span><span class="cx"> @zcorpan
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsbeforeunloadcancelingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,8 @@
</span><span class="cx"> 
</span><span class="cx"> PASS Returning a string must not cancel the event: CustomEvent, non-cancelable 
</span><span class="cx"> PASS Returning a string must not cancel the event: CustomEvent, cancelable 
</span><ins>+FAIL Returning false must not cancel the event, because it's coerced to the DOMString &quot;false&quot; which does not cancel CustomEvents: CustomEvent, cancelable assert_false: The event must not have been canceled expected false got true
+FAIL Returning a string must not cancel the event: BeforeUnloadEvent with type &quot;click&quot;, cancelable The operation is not supported.
</ins><span class="cx"> PASS Returning null with a real iframe unloading 
</span><span class="cx"> PASS Returning undefined with a real iframe unloading 
</span><span class="cx"> PASS Returning  with a real iframe unloading 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersbrowsingthewebunloadingdocumentsbeforeunloadcancelinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -11,7 +11,7 @@
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> &quot;use strict&quot;;
</span><span class="cx"> 
</span><del>-async_test(t =&gt; {
</del><ins>+promise_test(t =&gt; {
</ins><span class="cx">   let onbeforeunloadHappened = false;
</span><span class="cx">   window.onbeforeunload = t.step_func(() =&gt; {
</span><span class="cx">     onbeforeunloadHappened = true;
</span><span class="lines">@@ -18,19 +18,19 @@
</span><span class="cx">     return &quot;cancel me&quot;;
</span><span class="cx">   });
</span><span class="cx"> 
</span><del>-  const listener = t.step_func(e =&gt; {
</del><ins>+  const eventWatcher = new EventWatcher(t, window, &quot;beforeunload&quot;);
+  const promise = eventWatcher.wait_for(&quot;beforeunload&quot;).then(e =&gt; {
</ins><span class="cx">     assert_true(onbeforeunloadHappened, &quot;CustomEvent must be able to trigger the event handler&quot;);
</span><span class="cx">     assert_false(e.defaultPrevented, &quot;The event must not have been canceled&quot;);
</span><span class="cx">     window.onbeforeunload = null;
</span><del>-    t.done();
</del><span class="cx">   });
</span><span class="cx"> 
</span><del>-  window.addEventListener(&quot;beforeunload&quot;, listener);
</del><ins>+  window.dispatchEvent(new CustomEvent(&quot;beforeunload&quot;));
</ins><span class="cx"> 
</span><del>-  window.dispatchEvent(new CustomEvent(&quot;beforeunload&quot;));
</del><ins>+  return promise;
</ins><span class="cx"> }, &quot;Returning a string must not cancel the event: CustomEvent, non-cancelable&quot;);
</span><span class="cx"> 
</span><del>-async_test(t =&gt; {
</del><ins>+promise_test(t =&gt; {
</ins><span class="cx">   let onbeforeunloadHappened = false;
</span><span class="cx">   window.onbeforeunload = t.step_func(() =&gt; {
</span><span class="cx">     onbeforeunloadHappened = true;
</span><span class="lines">@@ -37,7 +37,8 @@
</span><span class="cx">     return &quot;cancel me&quot;;
</span><span class="cx">   });
</span><span class="cx"> 
</span><del>-  const listener = t.step_func(e =&gt; {
</del><ins>+  const eventWatcher = new EventWatcher(t, window, &quot;beforeunload&quot;);
+  const promise = eventWatcher.wait_for(&quot;beforeunload&quot;).then(e =&gt; {
</ins><span class="cx">     assert_true(onbeforeunloadHappened, &quot;CustomEvent must be able to trigger the event handler&quot;);
</span><span class="cx">     assert_false(e.defaultPrevented, &quot;The event must not have been canceled&quot;);
</span><span class="cx">     window.onbeforeunload = null;
</span><span class="lines">@@ -44,11 +45,49 @@
</span><span class="cx">     t.done();
</span><span class="cx">   });
</span><span class="cx"> 
</span><del>-  window.addEventListener(&quot;beforeunload&quot;, listener);
</del><ins>+  window.dispatchEvent(new CustomEvent(&quot;beforeunload&quot;, { cancelable: true }));
</ins><span class="cx"> 
</span><del>-  window.dispatchEvent(new CustomEvent(&quot;beforeunload&quot;, { cancelable: true }));
</del><ins>+  return promise;
</ins><span class="cx"> }, &quot;Returning a string must not cancel the event: CustomEvent, cancelable&quot;);
</span><span class="cx"> 
</span><ins>+promise_test(t =&gt; {
+  let onbeforeunloadHappened = false;
+  window.onbeforeunload = t.step_func(() =&gt; {
+    onbeforeunloadHappened = true;
+    return false;
+  });
+
+  const eventWatcher = new EventWatcher(t, window, &quot;beforeunload&quot;);
+  const promise = eventWatcher.wait_for(&quot;beforeunload&quot;).then(e =&gt; {
+    assert_true(onbeforeunloadHappened, &quot;CustomEvent must be able to trigger the event handler&quot;);
+    assert_false(e.defaultPrevented, &quot;The event must not have been canceled&quot;);
+    window.onbeforeunload = null;
+    t.done();
+  });
+
+  window.dispatchEvent(new CustomEvent(&quot;beforeunload&quot;, { cancelable: true }));
+
+  return promise;
+}, &quot;Returning false must not cancel the event, because it's coerced to the DOMString \&quot;false\&quot; which does not cancel &quot; +
+   &quot;CustomEvents: CustomEvent, cancelable&quot;);
+
+// This test can be removed if we update the DOM Standard to disallow createEvent(&quot;BeforeUnloadEvent&quot;). Browser support
+// is inconsistent. https://github.com/whatwg/dom/issues/362
+promise_test(t =&gt; {
+  const eventWatcher = new EventWatcher(t, window, &quot;click&quot;);
+  const promise = eventWatcher.wait_for(&quot;click&quot;).then(e =&gt; {
+    assert_false(e.defaultPrevented, &quot;The event must not have been canceled&quot;);
+    window.onbeforeunload = null;
+    t.done();
+  });
+
+  const ev = document.createEvent(&quot;BeforeUnloadEvent&quot;);
+  ev.initEvent(&quot;click&quot;, false, true);
+  window.dispatchEvent(ev);
+
+  return promise;
+}, &quot;Returning a string must not cancel the event: BeforeUnloadEvent with type \&quot;click\&quot;, cancelable&quot;);
+
</ins><span class="cx"> const testCases = [
</span><span class="cx">   {
</span><span class="cx">     valueToReturn: null,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacelocationprototypesettingcrossoriginsubexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+Blocked access to external URL http://www.localhost:8801/common/blank.html
+
+
+FAIL Cross-origin: the prototype is null assert_equals: expected null but got object &quot;[object LocationPrototype]&quot;
+PASS Cross-origin: setting the prototype to an empty object via Object.setPrototypeOf should throw a TypeError 
+FAIL Cross-origin: setting the prototype to an empty object via __proto__ should throw a &quot;SecurityError&quot; DOMException assert_throws: function &quot;function () {
+      target.__proto__ = newValue;
+    }&quot; threw object &quot;TypeError: Cannot set prototype of immutable prototype object&quot; that is not a DOMException SecurityError: property &quot;code&quot; is equal to undefined, expected 18
+PASS Cross-origin: setting the prototype to an empty object via Reflect.setPrototypeOf should return false 
+FAIL Cross-origin: the prototype must still be null assert_equals: expected null but got object &quot;[object LocationPrototype]&quot;
+FAIL Cross-origin: setting the prototype to null via Object.setPrototypeOf should not throw Cannot set prototype of immutable prototype object
+FAIL Cross-origin: setting the prototype to null via __proto__ should throw a &quot;SecurityError&quot; since it ends up in CrossOriginGetOwnProperty assert_throws: function &quot;function () {
+        target.__proto__ = newValue;
+      }&quot; threw object &quot;TypeError: Cannot set prototype of immutable prototype object&quot; that is not a DOMException SecurityError: property &quot;code&quot; is equal to undefined, expected 18
+FAIL Cross-origin: setting the prototype to null via Reflect.setPrototypeOf should return true assert_true: expected true got false
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacelocationprototypesettingcrossoriginsubhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;[[SetPrototypeOf]] on a Location object should not allow changing its value: cross-origin&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;http://html.spec.whatwg.org/multipage/#location-setprototypeof&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;script src=&quot;/common/test-setting-immutable-prototype.js&quot;&gt;&lt;/script&gt;
+
+&lt;iframe src=&quot;//{{domains[www]}}:{{ports[http][1]}}/common/blank.html&quot;&gt;&lt;/iframe&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+setup({ explicit_done: true });
+
+window.onload = () =&gt; {
+  const targetLocation = frames[0].location;
+
+  test(() =&gt; {
+    assert_equals(Object.getPrototypeOf(targetLocation), null);
+  }, &quot;Cross-origin: the prototype is null&quot;);
+
+  testSettingImmutablePrototype(&quot;Cross-origin&quot;, targetLocation, null, { isSameOriginDomain: false });
+
+  done();
+};
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsershistorythelocationinterfacew3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -28,8 +28,8 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-with-colon.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting.html
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin-domain.sub.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-cross-origin.sub.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-goes-cross-origin-domain.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-same-origin-domain.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-prototype-setting-same-origin.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersorigincrossoriginobjectscrossoriginobjectsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><del>-CONSOLE MESSAGE: line 397: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;http://127.0.0.1:8800&quot;. Protocols, domains, and ports must match.
-CONSOLE MESSAGE: line 397: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;http://127.0.0.1:8800&quot;. Protocols, domains, and ports must match.
</del><ins>+CONSOLE MESSAGE: line 403: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;http://127.0.0.1:8800&quot;. Protocols, domains, and ports must match.
+CONSOLE MESSAGE: line 403: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;http://127.0.0.1:8800&quot;. Protocols, domains, and ports must match.
</ins><span class="cx"> 
</span><span class="cx"> PASS Basic sanity-checking 
</span><span class="cx"> PASS Basic sanity-checking (exception type) 
</span><span class="lines">@@ -7,8 +7,8 @@
</span><span class="cx"> PASS Only whitelisted properties are accessible cross-origin (exception type) 
</span><span class="cx"> PASS [[GetPrototypeOf]] should return null 
</span><span class="cx"> PASS [[GetPrototypeOf]] should return null (exception type) 
</span><del>-PASS [[SetPrototypeOf]] should throw 
-PASS [[SetPrototypeOf]] should throw (exception type) 
</del><ins>+PASS [[SetPrototypeOf]] should return false 
+PASS [[SetPrototypeOf]] should return false (exception type) 
</ins><span class="cx"> PASS [[IsExtensible]] should return true for cross-origin objects 
</span><span class="cx"> PASS [[IsExtensible]] should return true for cross-origin objects (exception type) 
</span><span class="cx"> PASS [[PreventExtensions]] should throw for cross-origin objects 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersorigincrossoriginobjectscrossoriginobjectshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/origin/cross-origin-objects/cross-origin-objects.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -146,7 +146,13 @@
</span><span class="cx">     test_throws(exception_t, new TypeError, function() { protoSetter.call(C, new Object()); }, &quot;proto setter |call| on cross-origin Window&quot;);
</span><span class="cx">     test_throws(exception_t, new TypeError, function() { protoSetter.call(C.location, new Object()); }, &quot;proto setter |call| on cross-origin Location&quot;);
</span><span class="cx">   });
</span><del>-}, &quot;[[SetPrototypeOf]] should throw&quot;);
</del><ins>+  if (Reflect.setPrototypeOf) {
+    assert_false(Reflect.setPrototypeOf(C, new Object()),
+                 &quot;Reflect.setPrototypeOf on cross-origin Window&quot;);
+    assert_false(Reflect.setPrototypeOf(C.location, new Object()),
+                &quot;Reflect.setPrototypeOf on cross-origin Location&quot;);
+  }
+}, &quot;[[SetPrototypeOf]] should return false&quot;);
</ins><span class="cx"> 
</span><span class="cx"> /*
</span><span class="cx">  * [[IsExtensible]]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameopenfeaturestokenization001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+
+FAIL tokenization should skip window features separators before `name` assert_equals: &quot; noopener&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;&quot;. Protocols must match.
+ with type object]
+FAIL feature `name` should be converted to ASCII lowercase assert_equals: &quot;NOOPENER&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;&quot;. Protocols must match.
+ with type object]
+FAIL after `name`, tokenization should skip window features separators that are not &quot;=&quot; or &quot;,&quot; assert_equals: &quot;noopener&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;&quot;. Protocols must match.
+ with type object]
+FAIL Tokenizing should ignore window feature separators except &quot;,&quot; after initial &quot;=&quot; and before value assert_equals: &quot;noopener=  yes&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;&quot;. Protocols must match.
+ with type object]
+FAIL Tokenizing should read characters until first window feature separator as `value` assert_equals: &quot;noopener=noopener&quot; should set &quot;noopener&quot; expected null but got object &quot;[object Window]&quot;
+FAIL &quot;noopener&quot; should be based on name (key), not value assert_equals: &quot;noopener=false&quot; should activate feature &quot;noopener&quot; expected null but got object &quot;[object Window]&quot;
+PASS invalid feature names should not tokenize as &quot;noopener&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameopenfeaturestokenization001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,148 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML: window.open `features`: tokenization -- `noopener`&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://html.spec.whatwg.org/multipage/#apis-for-creating-and-navigating-browsing-contexts-by-name&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;
+var windowURL = 'resources/close-self.html';
+
+// Tests for how windows features are tokenized into 'name', 'value'
+// window features separators are ASCII whitespace, '=' and  ','
+
+test (t =&gt; {
+  // Tokenizing `name`: initial window features separators are ignored
+  // Each of these variants should tokenize to ('noopener', '')
+  var featureVariants = [
+    ' noopener',
+    '=noopener',
+    ',,noopener',
+    ',=, noopener',
+    '\n=noopener=',
+    '\tnoopener',
+    '\r,,,=noopener',
+    '\u000Cnoopener'
+  ];
+  featureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_equals(win, null, `&quot;${feature}&quot; should activate feature &quot;noopener&quot;`);
+  });
+}, 'tokenization should skip window features separators before `name`');
+
+test (t =&gt; {
+  // Tokenizing `name`: lowercase conversion
+  // Each of these variants should tokenize as feature ('noopener', '')
+  // except where indicated
+  // Note also that `value` is lowercased during tokenization
+  var featureVariants = [
+    'NOOPENER',
+    'noOpenER',
+    '  NOopener',
+    '=NOOPENER',
+    'noopener=NOOPENER', // =&gt; ('noopener', 'noopener')
+    'NOOPENER=noopener' // =&gt; ('noopener', 'noopener')
+  ];
+  featureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_equals(win, null, `&quot;${feature}&quot; should activate feature &quot;noopener&quot;`);
+  });
+}, 'feature `name` should be converted to ASCII lowercase');
+
+test (t =&gt; {
+  // After `name` has been collected, ignore any window features separators until '='
+  // except ',' OR a non-window-features-separator — break in those cases
+  // i.e. ignore whitespace until '=' unless a ',' is encountered first
+  // Each of these variants should tokenize as feature ('noopener', '')
+  var featureVariants = [
+    'noopener',
+    ' noopener\r',
+    'noopener\n =',
+    'noopener,',
+    'noopener  =,',
+    ', noopener   =',
+    'noopener,=',
+    'noopener foo', // =&gt; ('noopener', ''), ('foo', '')
+    'foo noopener=1', // =&gt; ('foo', ''), ('noopener', '1')
+    'foo=\u000Cnoopener' // =&gt; ('foo', ''), ('noopener', '')
+  ];
+  featureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_equals(win, null, `&quot;${feature}&quot; should activate feature &quot;noopener&quot;`);
+  });
+}, 'after `name`, tokenization should skip window features separators that are not &quot;=&quot; or &quot;,&quot;');
+
+test (t =&gt; {
+  // After initial '=', tokenizing should ignore all separators except ','
+  // before collecting `value`
+  // Each of these variants should tokenize as feature ('noopener', '')
+  // Except where indicated
+  var featureVariants = [
+    'noopener=  yes', // =&gt; ('noopener', 'yes')
+    'noopener==,',
+    'noopener=\n ,',
+    'noopener = \t ,',
+    'noopener\n=\r noopener,', // =&gt; ('noopener', 'noopener')
+    'noopener=,yes', // =&gt; ('noopener'), ('yes')
+    'noopener= foo=,', // =&gt; ('noopener', 'foo')
+    'noopener = \u000Cyes' // =&gt; ('noopener', 'yes')
+  ];
+  featureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_equals(win, null, `&quot;${feature}&quot; should activate feature &quot;noopener&quot;`);
+  });
+}, 'Tokenizing should ignore window feature separators except &quot;,&quot; after initial &quot;=&quot; and before value');
+
+test (t =&gt; {
+  // Tokenizing `value` should collect any non-separator code points until first separator
+  var featureVariants = [
+    'noopener=noopener', // =&gt; ('noopener', 'noopener')
+    'noopener=yes', // =&gt; ('noopener', 'yes')
+    'noopener = yes ,', // =&gt; ('noopener', 'yes')
+    'noopener=\nyes  ,', // =&gt; ('noopener', 'yes')
+    'noopener=yes yes', // =&gt; ('noopener', 'yes'), ('yes', '')
+    'noopener=yes\ts', // =&gt; ('noopener', 'yes'), ('s', '')
+    'noopener==', // =&gt; ('noopener', '')
+    'noopener=0\n,', // =&gt; ('noopener', '0')
+    '==noopener===', // =&gt; ('noopener', '')
+    'noopener==\u000C' // =&gt; ('noopener', '')
+  ];
+  featureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_equals(win, null, `&quot;${feature}&quot; should set &quot;noopener&quot;`);
+  });
+}, 'Tokenizing should read characters until first window feature separator as `value`');
+
+test (t =&gt; {
+  // If tokenizedFeatures contains an entry with the key &quot;noopener&quot;...disown opener
+  // i.e. `value` should be irrelevant
+  var featureVariants = [
+    'noopener=false',
+    ',noopener=0, ',
+    'foo=bar,noopener=noopener,',
+    'noopener=true',
+    'noopener=foo\nbar\t'
+  ];
+  featureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_equals(win, null, `&quot;${feature}&quot; should activate feature &quot;noopener&quot;`);
+  });
+}, '&quot;noopener&quot; should be based on name (key), not value');
+
+test (t =&gt; {
+  var invalidFeatureVariants = [
+    '-noopener', //     =&gt; ('-noopener', '')
+    'NOOPENERRRR', //   =&gt; ('noopenerrr', '')
+    'noOpenErR', //     =&gt; ('noopenerr', '')
+    'no_opener', //     =&gt; ('no_opener', '')
+    ' no opener', //    =&gt; ('no', ''), ('opener', '')
+    'no\nopener', //    =&gt; ('no', ''), ('opener', '')
+    'no,opener', //     =&gt; ('no', ''), ('opener', '')
+    '\0noopener', //    =&gt; ('\0noopener', '')
+    'noopener\u0000=yes' // =&gt; ('noopener\0', 'yes')
+  ];
+  invalidFeatureVariants.forEach(feature =&gt; {
+    var win = window.open(windowURL, '', feature);
+    assert_not_equals(win, null, `&quot;${feature}&quot; should NOT activate feature &quot;noopener&quot;`);
+  });
+}, 'invalid feature names should not tokenize as &quot;noopener&quot;');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameresourcescloseselfhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+&lt;script&gt;
+  window.close();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameresourcesw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</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/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/close-self.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynamew3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -23,3 +23,4 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload-1.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/close_unload.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/creating_browsing_context_test_01.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowproxyexoticobjectw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</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/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin-domain.sub.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-goes-cross-origin-domain.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin-domain.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-same-origin.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowproxyexoticobjectwindowproxyprototypesettingcrossoriginsubexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -5,12 +5,12 @@
</span><span class="cx"> PASS Cross-origin: setting the prototype to an empty object via Object.setPrototypeOf should throw a TypeError 
</span><span class="cx"> FAIL Cross-origin: setting the prototype to an empty object via __proto__ should throw a &quot;SecurityError&quot; DOMException assert_throws: function &quot;function () {
</span><span class="cx">       target.__proto__ = newValue;
</span><del>-    }&quot; threw object &quot;TypeError: Cannot set prototype of this object&quot; that is not a DOMException SecurityError: property &quot;code&quot; is equal to undefined, expected 18
</del><ins>+    }&quot; threw object &quot;TypeError: Cannot set prototype of immutable prototype object&quot; that is not a DOMException SecurityError: property &quot;code&quot; is equal to undefined, expected 18
</ins><span class="cx"> PASS Cross-origin: setting the prototype to an empty object via Reflect.setPrototypeOf should return false 
</span><span class="cx"> FAIL Cross-origin: the prototype must still be null assert_equals: expected null but got object &quot;[object WindowPrototype]&quot;
</span><del>-FAIL Cross-origin: setting the prototype to null via Object.setPrototypeOf should not throw Cannot set prototype of this object
</del><ins>+FAIL Cross-origin: setting the prototype to null via Object.setPrototypeOf should not throw Cannot set prototype of immutable prototype object
</ins><span class="cx"> FAIL Cross-origin: setting the prototype to null via __proto__ should throw a &quot;SecurityError&quot; since it ends up in CrossOriginGetOwnProperty assert_throws: function &quot;function () {
</span><span class="cx">         target.__proto__ = newValue;
</span><del>-      }&quot; threw object &quot;TypeError: Cannot set prototype of this object&quot; that is not a DOMException SecurityError: property &quot;code&quot; is equal to undefined, expected 18
</del><ins>+      }&quot; threw object &quot;TypeError: Cannot set prototype of immutable prototype object&quot; that is not a DOMException SecurityError: property &quot;code&quot; is equal to undefined, expected 18
</ins><span class="cx"> FAIL Cross-origin: setting the prototype to null via Reflect.setPrototypeOf should return true assert_true: expected true got false
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowsersthewindowproxyexoticobjectwindowproxyprototypesettingcrossoriginsubhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/the-windowproxy-exotic-object/windowproxy-prototype-setting-cross-origin.sub.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;[[SetPrototypeOf]] on a WindowProxy object should not allow changing its value: cross-origin&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;http://html.spec.whatwg.org/multipage/#windowproxy-setprototypeof&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;script src=&quot;/common/test-setting-immutable-prototype.js&quot;&gt;&lt;/script&gt;
+
+&lt;iframe src=&quot;//{{domains[www]}}:{{ports[http][1]}}/common/blank.html&quot;&gt;&lt;/iframe&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+setup({ explicit_done: true });
+
+window.onload = () =&gt; {
+  const target = frames[0];
+
+  test(() =&gt; {
+    assert_equals(Object.getPrototypeOf(target), null);
+  }, &quot;Cross-origin: the prototype is null&quot;);
+
+  testSettingImmutablePrototype(&quot;Cross-origin&quot;, target, null, { isSameOriginDomain: false });
+
+  done();
+};
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenerclosedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-closed.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -3,8 +3,8 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx">   &lt;head&gt;
</span><span class="cx">     &lt;title&gt;Auxiliary Browing Contexts: window.opener when Opener Removed/Closed&lt;/title&gt;
</span><del>-    &lt;script src=&quot;../../../../../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../../../../../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</del><ins>+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenermultiplehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-multiple.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,8 +2,8 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx">   &lt;head&gt;
</span><span class="cx">     &lt;title&gt;Auxiliary Browing Contexts: window.opener, multiple&lt;/title&gt;
</span><del>-    &lt;script src=&quot;../../../../../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../../../../../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</del><ins>+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenernoopenerhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noopener.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,8 +2,8 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx">   &lt;head&gt;
</span><span class="cx">     &lt;title&gt;Auxiliary Browing Contexts: window.opener noopener&lt;/title&gt;
</span><del>-    &lt;script src=&quot;../../../../../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../../../../../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</del><ins>+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenernoreferrerhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener-noreferrer.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,8 +2,8 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx">   &lt;head&gt;
</span><span class="cx">     &lt;title&gt;Auxiliary Browing Contexts: window.opener noreferrer&lt;/title&gt;
</span><del>-    &lt;script src=&quot;../../../../../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../../../../../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</del><ins>+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsauxiliarybrowsingcontextsopenerhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/auxiliary-browsing-contexts/opener.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,8 +2,8 @@
</span><span class="cx"> &lt;html&gt;
</span><span class="cx">   &lt;head&gt;
</span><span class="cx">     &lt;title&gt;Auxiliary Browing Contexts: window.opener&lt;/title&gt;
</span><del>-    &lt;script src=&quot;../../../../../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
-    &lt;script src=&quot;../../../../../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</del><ins>+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx">     &lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">   &lt;/head&gt;
</span><span class="cx">   &lt;body&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS window.open into `_blank` should create a new browsing context each time 
+PASS `_blank` should be ASCII case-insensitive 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Browsing context - `_blank` name keyword&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;
+test(t =&gt; {
+  var window1 = window.open('about:blank', '_blank');
+  var window2 = window.open('about:blank', '_blank');
+  var window3 = window.open('about:blank', '_blank');
+  t.add_cleanup(() =&gt; {
+    window1.close();
+    window2.close();
+    window3.close();
+  });
+  assert_not_equals(window1, window2);
+  assert_not_equals(window2, window3);
+  assert_not_equals(window1, window3);
+}, 'window.open into `_blank` should create a new browsing context each time');
+
+test(t =&gt; {
+  var window1 = window.open('about:blank', '_bLAnk');
+  var window2 = window.open('about:blank', '_bLAnk');
+  var window3 = window.open('about:blank', '_bLAnk');
+  t.add_cleanup(() =&gt; {
+    window1.close();
+    window2.close();
+    window3.close();
+  });
+  assert_not_equals(window1, window2);
+  assert_not_equals(window2, window3);
+  assert_not_equals(window1, window3);
+}, '`_blank` should be ASCII case-insensitive');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank002expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Context for opened noreferrer link targeted to &quot;_blank&quot; should not have opener reference 
+Link
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank002html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Link with target=_blank, rel=noreferrer&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;a href=&quot;resources/report-has-opener.html&quot; rel=&quot;noreferrer&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;
+&lt;script&gt;
+var prefixedStorage;
+setup (() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+
+async_test(t =&gt; {
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+  var a = document.getElementsByTagName('a')[0];
+  a.href = prefixedStorage.url(a.href);
+  prefixedStorage.onSet('hasOpener', t.step_func_done(e =&gt; {
+    assert_equals(e.newValue, 'false');
+  }));
+  a.click();
+}, 'Context for opened noreferrer link targeted to &quot;_blank&quot; should not have opener reference');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank003expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Context created by link targeting &quot;_blank&quot; should retain opener reference 
+Link
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_blank003html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Link with target=_blank, no rel&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;a href=&quot;resources/report-has-opener.html&quot; target=&quot;_blank&quot;&gt;Link&lt;/a&gt;
+&lt;script&gt;
+var prefixedStorage;
+setup(() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+async_test(t =&gt; {
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+  prefixedStorage.onSet('hasOpener', t.step_func_done(e =&gt; {
+    assert_equals(e.newValue, 'true');
+  }));
+  var a = document.getElementsByTagName('a')[0];
+  a.href = prefixedStorage.url(a.href);
+  a.click();
+}, 'Context created by link targeting &quot;_blank&quot; should retain opener reference');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS The parent browsing context must be chosen if the given name is `_parent` 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: Choose browsing context - '_parent'&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&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;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+async_test(t =&gt; {
+  window.addEventListener('message', t.step_func_done(e =&gt; {
+    assert_equals(e.data.name, 'parentWin');
+  }));
+}, 'The parent browsing context must be chosen if the given name is `_parent`');
+&lt;/script&gt;
+&lt;iframe id=&quot;embedded&quot; src=&quot;resources/choose-_parent-001-iframe-1.html&quot; name=&quot;parentWin&quot; style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent002expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS choosing _parent context: multiple nested contexts 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent002html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Choose browsing context - '_parent' (nested contexts)&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;
+async_test(t =&gt; {
+  var topWindow;
+  t.add_cleanup(() =&gt; topWindow.close());
+  window.addEventListener('message', t.step_func_done(e =&gt; {
+    assert_equals(e.data.name, 'iframeParent');
+    assert_false(e.data.isTop, 'window.parent is not top');
+  }));
+  topWindow = window.open('resources/choose-_parent-002-window.html', '_blank');
+}, 'choosing _parent context: multiple nested contexts');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent003expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS _parent should reuse window.parent context 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent003html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Choose browsing context - '_parent' (via window.open)&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;
+async_test(t =&gt; {
+  var topWindow;
+  t.add_cleanup(() =&gt; topWindow.close());
+  window.addEventListener('message', t.step_func_done(e =&gt; {
+    assert_equals(e.data.name, 'parentTopReplace');
+    assert_equals(e.data.isTop, true);
+  }));
+  topWindow = window.open('resources/choose-_parent-003-window.html', 'parentTopReplace');
+}, '_parent should reuse window.parent context');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent004expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS choosing _parent context should be case-insensitive 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_parent004html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: Choose browsing context - '_parent' (case-sensitivity)&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+var prefixedStorage;
+var iframe;
+setup(() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+
+async_test(t =&gt; {
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+  var testFunc = (function (t) {
+    var completed = 0;
+    var testCount = 2;
+    return function (actual, expected) {
+      assert_equals(actual, expected);
+      if (++completed &gt;= testCount) {
+        t.done();
+      }
+    }
+  }(t));
+
+  prefixedStorage.onSet('isTop', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'false');
+  }));
+  prefixedStorage.onSet('name', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'parentWin');
+  }));
+  iframe = document.createElement('iframe');
+  iframe.src = prefixedStorage.url('resources/choose-_parent-004-iframe-1.html');
+  iframe.name = 'parentWin';
+  document.body.appendChild(iframe);
+}, 'choosing _parent context should be case-insensitive');
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS The current browsing context must be chosen if the given name is &quot;_self&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: Choose browsing context - the given name is '_self'&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&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;log&quot;&gt;&lt;/div&gt;
+&lt;iframe src=&quot;resources/choose-_self-001-iframe.html&quot; style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(t =&gt; {
+  window.addEventListener('message', t.step_func_done(e =&gt; {
+    assert_equals(e.data.name, 'myownself');
+  }), false);
+}, 'The current browsing context must be chosen if the given name is &quot;_self&quot;');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self002expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS choosing _self context should be case-insensitive 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_self002html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: Choose browsing context - '_self' (case-sensitivity)&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+var prefixedStorage;
+setup(() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+
+async_test(t =&gt; {
+  var iframe;
+
+  var testFunc = (function (t) {
+    var completed = 0;
+    var testCount = 2;
+    return function (actual, expected) {
+      assert_equals(actual, expected);
+      if (++completed &gt;= testCount) {
+        t.done();
+      }
+    }
+  }(t));
+
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+
+  prefixedStorage.onSet('isTop', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'false');
+  }));
+  prefixedStorage.onSet('name', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'testWin');
+  }));
+
+  iframe = document.createElement('iframe');
+  iframe.name = 'testWin';
+  iframe.src = prefixedStorage.url('resources/choose-_self-002-iframe.html');
+  document.body.appendChild(iframe);
+
+}, 'choosing _self context should be case-insensitive');
+
+&lt;/script&gt;
+
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Should choose current browsing context for &quot;_top&quot; if current is top 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;HTML Test: Browsing context name - _top (current is top)&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var prefixedStorage;
+setup (() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+
+async_test(t =&gt; {
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+
+  var testFunc = (function (t) {
+    var completed = 0;
+    var testCount = 2;
+    return function (actual, expected) {
+      assert_equals(actual, expected);
+      if (++completed &gt;= testCount) {
+        t.done();
+      }
+    }
+  }(t));
+
+  prefixedStorage.onSet('isTop', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'true');
+  }));
+  prefixedStorage.onSet('name', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'topWin1');
+  }));
+
+  window.open(prefixedStorage.url('resources/open-in-_top.html'), '_blank');
+}, 'Should choose current browsing context for &quot;_top&quot; if current is top');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top002expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Should choose top browsing context for &quot;_top&quot; if current is not top 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top002html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;HTML Test: Browsing context name - _top&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var prefixedStorage;
+setup (() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+
+async_test(t =&gt; {
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+
+  var testFunc = (function (t) {
+    var completed = 0;
+    var testCount = 2;
+    return function (actual, expected) {
+      assert_equals(actual, expected);
+      if (++completed &gt;= testCount) {
+        t.done();
+      }
+    }
+  }(t));
+
+  prefixedStorage.onSet('isTop', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'true');
+  }));
+  prefixedStorage.onSet('name', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'topWin2');
+  }));
+  window.open(prefixedStorage.url('resources/choose-_top-002-window.html'), '_blank');
+}, 'Should choose top browsing context for &quot;_top&quot; if current is not top');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top003expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS choosing _top context should be case-insensitive 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoose_top003html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Choose browsing context - '_top' (case-sensitivity)&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;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+var prefixedStorage;
+setup(() =&gt; prefixedStorage = new PrefixedLocalStorageTest());
+
+async_test(t =&gt; {
+  var testFunc = (function (t) {
+    var completed = 0;
+    var testCount = 2;
+    return function (actual, expected) {
+      assert_equals(actual, expected);
+      if (++completed &gt;= testCount) {
+        t.done();
+      }
+    }
+  }(t));
+
+  t.add_cleanup(() =&gt; prefixedStorage.cleanup());
+
+  prefixedStorage.onSet('isTop', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'true');
+  }));
+  prefixedStorage.onSet('name', t.step_func(e =&gt; {
+    testFunc(e.newValue, 'topWin');
+  }));
+
+  window.open(prefixedStorage.url('resources/choose-_top-003-iframe-1.html'), '_blank');
+}, 'choosing _top context should be case-insensitive');
+
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS A embedded browsing context has empty-string default name 
+PASS A browsing context which is opened by window.open() method with '_blank' parameter has empty-string default name 

</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Browsing context - Default name&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&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;log&quot;&gt;&lt;/div&gt;
+&lt;iframe src=&quot;/common/blank.html&quot; style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;object id=&quot;obj&quot; type=&quot;text/html&quot; data=&quot;about:blank&quot;&gt;&lt;/object&gt;
+&lt;embed id=&quot;embedded&quot; type=&quot;image/svg+xml&quot; src=&quot;/images/green.svg&quot; width=&quot;0&quot; height=&quot;0&quot; /&gt;
+&lt;script&gt;
+test(t =&gt; {
+  assert_equals(window.frames[0].name, &quot;&quot;);
+  assert_equals(document.getElementById(&quot;embedded&quot;).name, &quot;&quot;);
+  assert_equals(window[&quot;obj&quot;].name, &quot;&quot;);
+}, &quot;A embedded browsing context has empty-string default name&quot;);
+
+test(t =&gt; {
+  var win = window.open(&quot;about:blank&quot;, &quot;_blank&quot;);
+  assert_equals(win.name, &quot;&quot;);
+  win.close();
+}, &quot;A browsing context which is opened by window.open() method with '_blank' parameter has empty-string default name&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault002expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS The current browsing context must be chosen if the given name is empty string 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschoosedefault002html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Browsing context names - empty string&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&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;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+async_test(t =&gt; {
+  window.addEventListener('message', t.step_func_done(e =&gt; {
+    assert_equals(e.data.isTop, false);
+    assert_equals(e.data.name, 'hellothere', 'Empty-string browsing context should choose current context');
+  }), false);
+}, 'The current browsing context must be chosen if the given name is empty string');
+&lt;/script&gt;
+&lt;iframe name=&quot;hellothere&quot; src=&quot;resources/choose-default-002-iframe.html&quot;&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschooseexisting001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS An existing browsing context must be chosen if the given name is the same as its name 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnameschooseexisting001html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: Choose browsing context - the given name is same as an existing browsing context's name&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&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;log&quot;&gt;&lt;/div&gt;
+&lt;iframe src=&quot;resources/choose-existing-001-iframe.html&quot; style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;iframe name=&quot;iExist&quot; style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(t =&gt; {
+  window.addEventListener('message', t.step_func_done(e =&gt; {
+    assert_equals(e.data.name, 'iExist');
+  }), false);
+
+}, 'An existing browsing context must be chosen if the given name is the same as its name');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent001iframe1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot;&gt;
+&lt;iframe src=&quot;open-in-_parent.html&quot;&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent002iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent: nested context&lt;/title&gt;
+&lt;iframe name=&quot;iframeChild&quot; src=&quot;open-in-_parent.html&quot;&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent002windowhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: browsing context name - parent: top-level context&lt;/title&gt;
+&lt;iframe name=&quot;iframeParent&quot; src=&quot;choose-_parent-002-iframe.html&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+// Relay a message from child context to opener context
+window.addEventListener('message', e =&gt; {
+  if (window.opener) {
+    window.opener.postMessage(e.data, '*');
+  }
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent003iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent&lt;/title&gt;
+&lt;script&gt;
+window.open(&quot;post-to-opener.html&quot;, &quot;_parent&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent003windowhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent: top-level context (gets replaced)&lt;/title&gt;
+&lt;iframe name=&quot;iframeOpener&quot; src=&quot;choose-_parent-003-iframe.html&quot;&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent004iframe1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent&lt;/title&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup: true
+});
+var iframe = document.createElement('iframe');
+iframe.src = prefixedStorage.url('choose-_parent-004-iframe-2.html');
+document.body.appendChild(iframe);
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_parent004iframe2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent (case-insensitive)&lt;/title&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource();
+window.open(prefixedStorage.url('report-is-top.html'), '_pARent');
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_self001iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - self&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot;&gt;
+&lt;script&gt;
+window.name = 'myownself';
+var win = window.open('post-to-top.html', '_self');
+win.close();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_self002iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: browsing context name - self (case-insensitive)&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot;&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup: true
+});
+var win = window.open(prefixedStorage.url('report-is-top.html'), '_sElF');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_top002windowhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;title&gt;HTML Test: browsing context name - _top&lt;/title&gt;
+&lt;body&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup:true
+});
+window.name = 'topWin2';
+var iframe = document.createElement('iframe');
+iframe.src = prefixedStorage.url('open-in-_top.html');
+// Append iframe that will open another document into `_top` (this context)
+document.body.appendChild(iframe);
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_top003iframe1html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: browsing context name - top (case-insensitive)&lt;/title&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+&lt;/body&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup: true
+});
+window.name = 'topWin';
+var iframe = document.createElement('iframe');
+iframe.src = prefixedStorage.url('choose-_top-003-iframe-2.html');
+document.body.appendChild(iframe);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoose_top003iframe2html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html        2017-04-09 18:49:22 UTC (rev 215164)
</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;HTML Test: browsing context name - top (case-insensitive)&lt;/title&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup: true
+});
+window.open(prefixedStorage.url(&quot;report-is-top.html&quot;), &quot;_ToP&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschoosedefault002iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - Empty string&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot;&gt;
+&lt;body onload=&quot;followLink()&quot;&gt;
+&lt;/body&gt;
+&lt;script&gt;
+function followLink() {
+  var a = document.createElement('a');
+  a.href = 'post-to-top.html';
+  a.target = ''; // Target is empty string
+  document.body.appendChild(a);
+  a.click();
+}
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourceschooseexisting001iframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;This is a test page&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot;&gt;
+&lt;script&gt;
+window.open(&quot;post-to-top.html&quot;, &quot;iExist&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesopenin_parenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;HTML Test: browsing context name - parent&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot;&gt;
+&lt;script&gt;
+
+window.open(&quot;post-to-top.html&quot;, &quot;_parent&quot;);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesopenin_tophtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;title&gt;HTML Test: browsing context name - _top&lt;/title&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource();
+window.name = 'topWin1';
+window.open(prefixedStorage.url('report-is-top.html'), '_top');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesreporthasopenerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup: true
+});
+prefixedStorage.setItem('hasOpener', window.opener !== null);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesreportistophtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;script src=&quot;/common/PrefixedLocalStorage.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+var prefixedStorage = new PrefixedLocalStorageResource({
+  close_on_cleanup: true
+});
+prefixedStorage.setItem('isTop', window === window.top);
+prefixedStorage.setItem('name', window.name);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsbrowsingcontextnamesresourcesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,14 +15,23 @@
</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/browsing-context-names/resources/parent-iframe-1.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-iframe-2.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-iframe-3.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-iframe-insensitive-1.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-iframe-insensitive-2.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-top-nested.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-top-replace.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/parent-top.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-001-iframe-1.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-002-window.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-003-window.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-1.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_parent-004-iframe-2.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-001-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_self-002-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-002-window.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-1.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-_top-003-iframe-2.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-default-002-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/choose-existing-001-iframe.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_parent.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/open-in-_top.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/post-to-opener.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/post-to-top-or-close.html
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/post-to-top.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-has-opener.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/resources/report-is-top.html
</ins></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 (215163 => 215164)</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-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,19 +15,18 @@
</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/browsing-context-names/001-1.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/001.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/002-1.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/002.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-_blank.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-existing.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-parent-001.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-parent-002.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-parent-003.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-parent-004.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-self-1.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-choose-self-2.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/browsing-context-default-name.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/existing.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/self1.html
-/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/self2.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-001.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-002.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_blank-003.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-001.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-002.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-003.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_parent-004.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-001.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_self-002.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-001.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-002.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-_top-003.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-001.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-default-002.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/browsing-context-names/choose-existing-001.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsopenercrossoriginmanualsubhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;ol&gt;
+ &lt;li&gt;&lt;p&gt;Clicking this link must navigate this page to a resource that contains &quot;THE END&quot;:
+ &lt;a href=//{{domains[www1]}}:{{location[port]}}/html/browsers/windows/resources/opener-cross-origin.html target=_blank&gt;test&lt;/a&gt;
+
+ &lt;li&gt;&lt;p&gt;Clicking this link must open a new browsing context that is empty:
+ &lt;a rel=noreferrer href=//{{domains[www1]}}:{{location[port]}}/html/browsers/windows/resources/opener-cross-origin.html target=_blank&gt;test&lt;/a&gt;
+
+ &lt;li&gt;&lt;p&gt;Clicking this link must navigate this page to a resource that contains &quot;THE END&quot;:
+ &lt;a href=//{{domains[www1]}}:{{location[port]}}/html/browsers/windows/resources/opener-cross-origin-embed.sub.html target=_blank&gt;test&lt;/a&gt;
+&lt;/ol&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesopenercrossoriginembedsubhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+&lt;meta charset=utf-8&gt;
+&lt;iframe src=//{{domains[élève]}}:{{location[port]}}/html/browsers/windows/resources/opener-cross-origin.html&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesopenercrossoriginendtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+THE END
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesopenercrossoriginhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+&lt;script&gt;
+  parent.opener.location.href = &quot;./opener-cross-origin-end.txt&quot;
+  parent.window.close()
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsresourcesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -19,6 +19,9 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/echo-window-name.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/nested-post-to-opener.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/noreferrer-window-name.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-embed.sub.html
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin-end.txt
+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/opener-cross-origin.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/post-to-opener.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/target-cross-origin.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/resources/window-close-button.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlbrowserswindowsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -21,4 +21,5 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/noreferrer-cross-origin-window-name-manual.sub.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/noreferrer-null-opener.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/noreferrer-window-name.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/opener-cross-origin-manual.sub.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/browsers/windows/targeting-multiple-cross-origin-manual.sub.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/OWNERS (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+@ayg
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmldomw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/dom/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</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/dom/OWNERS
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-embedded.js
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-forms.js
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/dom/elements-grouping.js
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlresourcescommonjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/resources/common.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/resources/common.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/resources/common.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -61,7 +61,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     var iframe = document.createElement('iframe');
</span><del>-    iframe.style.display = 'none';
</del><span class="cx"> 
</span><span class="cx">     if (typeof (src) != 'undefined') {
</span><span class="cx">         iframe.src = src;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsOWNERS"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/OWNERS (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/OWNERS                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+@ayg
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsembeddedcontentthecanvaselementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -92,7 +92,6 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.space.png
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.trailingjunk.png
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.html
</del><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.whitespace.png
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.parse.zero.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/the-canvas-element/size.attributes.reflect.setcontent.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionstartendexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+Harness Error (TIMEOUT), message = null
+
+PASS Sanity check for testValue length; if this fails, variou absolute offsets in the test below need to be adjusted to be less than testValue.length 
+FAIL onselect should fire when selectionStart is changed assert_equals: Initial .value set on textarea-appended should set selectionStart to end of value expected 10 but got 0
+NOTRUN onselect should fire when selectionStart is changed on input-appended 
+NOTRUN onselect should fire when selectionStart is changed on input-not-appended 
+NOTRUN onselect should fire when selectionStart is changed on input-appended-prefocused 
+NOTRUN onselect should fire when selectionStart is changed on input-not-appended-prefocused 
+FAIL onselect should fire when selectionEnd is changed assert_equals: Initial .value set on textarea-appended should set selectionEnd to end of value expected 10 but got 0
+NOTRUN onselect should fire when selectionEnd is changed on input-appended 
+NOTRUN onselect should fire when selectionEnd is changed on input-not-appended 
+NOTRUN onselect should fire when selectionEnd is changed on input-appended-prefocused 
+NOTRUN onselect should fire when selectionEnd is changed on input-not-appended-prefocused 
+FAIL Setting selectionStart to a value larger than selectionEnd should increase selectionEnd assert_equals: Initial .value set on textarea-appended should set selectionStart to end of value expected 10 but got 0
+FAIL Setting selectionEnd to a value smaller than selectionStart should decrease selectionStart assert_equals: Initial .value set on textarea-appended should set selectionStart to end of value expected 10 but got 0
+FAIL selectionStart edge-case values assert_equals: selectionStart setter on input-appended should convert -1 to 2^32-1 expected 10 but got 0
+FAIL selectionEnd edge-case values assert_equals: selectionEnd setter on input-appended should convert -1 to 2^32-1 expected 10 but got 0
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionstartendhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,148 @@
</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;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+  function createInputElement(value, append, suffix) {
+    var el = document.createElement(&quot;input&quot;);
+    el.type = &quot;text&quot;;
+    el.value = value;
+    el.id = &quot;input&quot; + (append ? &quot;-appended&quot; : &quot;-not-appended&quot;) + (suffix ? suffix : &quot;&quot;);
+    if (append) {
+      document.body.appendChild(el);
+    }
+    return el;
+  };
+
+  function createTextareaElement(value, append, suffix) {
+    var el = document.createElement(&quot;textarea&quot;);
+    el.value = value;
+
+    el.id = &quot;textarea&quot; + (append ? &quot;-appended&quot; : &quot;-not-appended&quot;) + (suffix ? suffix : &quot;&quot;);
+    if (append) {
+      document.body.appendChild(el);
+    }
+    return el;
+  };
+
+  function createPrefocusedInputElement(value, append) {
+    var el = createInputElement(value, append, &quot;-prefocused&quot;);
+    el.focus();
+    el.blur();
+    return el;
+  }
+
+  function createPrefocusedTextareaElement(value, append) {
+    var el = createTextareaElement(value, append, &quot;-prefocused&quot;);
+    el.focus();
+    el.blur();
+    return el;
+  }
+
+  function createTestElements(value) {
+    return [ createInputElement(value, true),
+             createInputElement(value, false),
+             createPrefocusedInputElement(value, true),
+             createPrefocusedInputElement(value, false),
+             createTextareaElement(value, true),
+             createTextareaElement(value, false),
+             createPrefocusedTextareaElement(value, true),
+             createPrefocusedTextareaElement(value, false),
+           ];
+  }
+
+  var testValue = &quot;abcdefghij&quot;;
+
+  test(function() {
+    assert_equals(testValue.length, 10);
+  }, &quot;Sanity check for testValue length; if this fails, variou absolute offsets in the test below need to be adjusted to be less than testValue.length&quot;);
+
+  test(function() {
+    for (let el of createTestElements(testValue)) {
+      assert_equals(el.selectionStart, testValue.length,
+                    `Initial .value set on ${el.id} should set selectionStart to end of value`);
+      var t = async_test(`onselect should fire when selectionStart is changed on ${el.id}`);
+      el.onselect = t.step_func_done(function(e) {
+        assert_equals(e.type, &quot;select&quot;);
+        el.remove();
+      });
+      el.selectionStart = 2;
+    }
+  }, &quot;onselect should fire when selectionStart is changed&quot;);
+
+  test(function() {
+    for (let el of createTestElements(testValue)) {
+      assert_equals(el.selectionEnd, testValue.length,
+                    `Initial .value set on ${el.id} should set selectionEnd to end of value`);
+      var t = async_test(`onselect should fire when selectionEnd is changed on ${el.id}`);
+      el.onselect = t.step_func_done(function(e) {
+        assert_equals(e.type, &quot;select&quot;);
+        el.remove();
+      });
+      el.selectionEnd = 2;
+    }
+  }, &quot;onselect should fire when selectionEnd is changed&quot;);
+
+  test(function() {
+    for (let el of createTestElements(testValue)) {
+      assert_equals(el.selectionStart, testValue.length,
+                    `Initial .value set on ${el.id} should set selectionStart to end of value`);
+      el.selectionStart = 0;
+      el.selectionEnd = 5;
+      el.selectionStart = 8;
+      assert_equals(el.selectionStart, 8, `selectionStart on ${el.id}`);
+      assert_equals(el.selectionEnd, 8, `selectionEnd on ${el.id}`);
+      el.remove();
+    }
+  }, &quot;Setting selectionStart to a value larger than selectionEnd should increase selectionEnd&quot;);
+
+  test(function() {
+    for (let el of createTestElements(testValue)) {
+      assert_equals(el.selectionStart, testValue.length,
+                    `Initial .value set on ${el.id} should set selectionStart to end of value`);
+      assert_equals(el.selectionEnd, testValue.length,
+                    `Initial .value set on ${el.id} should set selectionEnd to end of value`);
+      el.selectionStart = 8;
+      el.selectionEnd = 5;
+      assert_equals(el.selectionStart, 5, `selectionStart on ${el.id}`);
+      assert_equals(el.selectionEnd, 5, `selectionEnd on ${el.id}`);
+      el.remove();
+    }
+  }, &quot;Setting selectionEnd to a value smaller than selectionStart should decrease selectionStart&quot;);
+
+  test(function() {
+    for (let el of createTestElements(testValue)) {
+      el.selectionStart = 0;
+      assert_equals(el.selectionStart, 0, `We just set it on ${el.id}`);
+      el.selectionStart = -1;
+      assert_equals(el.selectionStart, testValue.length,
+                    `selectionStart setter on ${el.id} should convert -1 to 2^32-1`);
+      el.selectionStart = Math.pow(2, 32);
+      assert_equals(el.selectionStart, 0,
+                    `selectionStart setter on ${el.id} should convert 2^32 to 0`);
+      el.selectionStart = Math.pow(2, 32) - 1;
+      assert_equals(el.selectionStart, testValue.length,
+                    `selectionStart setter on ${el.id} should leave 2^32-1 as-is`);
+      el.remove();
+    }
+  }, &quot;selectionStart edge-case values&quot;);
+
+  test(function() {
+    for (let el of createTestElements(testValue)) {
+      el.selectionEnd = 0;
+      assert_equals(el.selectionEnd, 0, `We just set it on ${el.id}`);
+      el.selectionEnd = -1;
+      assert_equals(el.selectionEnd, testValue.length,
+                    `selectionEnd setter on ${el.id} should convert -1 to 2^32-1`);
+      el.selectionEnd = Math.pow(2, 32);
+      assert_equals(el.selectionEnd, 0,
+                    `selectionEnd setter on ${el.id} should convert 2^32 to 0`);
+      el.selectionEnd = Math.pow(2, 32) - 1;
+      assert_equals(el.selectionEnd, testValue.length,
+                    `selectionEnd setter on ${el.id} should leave 2^32-1 as-is`);
+      el.remove();
+    }
+  }, &quot;selectionEnd edge-case values&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionvalueinteractionsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+
+FAIL value dirty flag behavior after setRangeText on textarea not in body assert_equals: Calling setRangeText should set the value dirty flag expected &quot;somexyzing&quot; but got &quot;set range text&quot;
+FAIL value dirty flag behavior after setRangeText on input not in body assert_equals: Calling setRangeText should set the value dirty flag expected &quot;somexyzing&quot; but got &quot;set range text&quot;
+PASS value dirty flag behavior after setRangeText on textarea in body 
+PASS value dirty flag behavior after setRangeText on input in body 
+PASS value dirty flag behavior after setRangeText on textarea in body with parsed default value 
+PASS value dirty flag behavior after setRangeText on input in body with parsed default value 
+PASS value dirty flag behavior after setRangeText on focused textarea 
+PASS value dirty flag behavior after setRangeText on focused input 
+PASS value dirty flag behavior after setRangeText on focused then blurred textarea 
+PASS value dirty flag behavior after setRangeText on focused then blurred input 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionvalueinteractionshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,95 @@
</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;div id=log&gt;&lt;/div&gt;
+&lt;div id=target&gt;&lt;/div&gt;
+&lt;script&gt;
+  var target = document.getElementById(&quot;target&quot;);
+  var sometext = &quot;something&quot;;
+  var shorttext = &quot;abc&quot;;
+  var elemData = [
+    {
+      desc: &quot;textarea not in body&quot;,
+      factory: () =&gt; document.createElement(&quot;textarea&quot;),
+    },
+    {
+      desc: &quot;input not in body&quot;,
+      factory: () =&gt; document.createElement(&quot;input&quot;),
+    },
+    {
+      desc: &quot;textarea in body&quot;,
+      factory: () =&gt; document.body.appendChild(document.createElement(&quot;textarea&quot;)),
+    },
+    {
+      desc: &quot;input in body&quot;,
+      factory: () =&gt; document.body.appendChild(document.createElement(&quot;input&quot;)),
+    },
+    {
+      desc: &quot;textarea in body with parsed default value&quot;,
+      factory: () =&gt; {
+        target.innerHTML = &quot;&lt;textarea&gt;abcdefghij&lt;/textarea&gt;&quot;
+        return target.querySelector(&quot;textarea&quot;);
+      },
+    },
+    {
+      desc: &quot;input in body with parsed default value&quot;,
+      factory: () =&gt; {
+        target.innerHTML = &quot;&lt;input value='abcdefghij'&gt;&quot;
+        return target.querySelector(&quot;input&quot;);
+      },
+    },
+    {
+      desc: &quot;focused textarea&quot;,
+      factory: () =&gt; {
+        var t = document.body.appendChild(document.createElement(&quot;textarea&quot;));
+        t.focus();
+        return t;
+      },
+    },
+    {
+      desc: &quot;focused input&quot;,
+      factory: () =&gt; {
+        var i = document.body.appendChild(document.createElement(&quot;input&quot;));
+        i.focus();
+        return i;
+      },
+    },
+    {
+      desc: &quot;focused then blurred textarea&quot;,
+      factory: () =&gt; {
+        var t = document.body.appendChild(document.createElement(&quot;textarea&quot;));
+        t.focus();
+        t.blur();
+        return t;
+      },
+    },
+    {
+      desc: &quot;focused then blurred input&quot;,
+      factory: () =&gt; {
+        var i = document.body.appendChild(document.createElement(&quot;input&quot;));
+        i.focus();
+        i.blur()
+        return i;
+      },
+    },
+  ];
+
+for (var data of elemData) {
+  test(function() {
+    var el = data.factory();
+    this.add_cleanup(() =&gt; el.remove());
+    el.defaultValue = sometext;
+    assert_true(sometext.length &gt; 8,
+                &quot;sometext too short, test won't work right&quot;);
+    el.selectionStart = 4;
+    el.selectionEnd = 6;
+    el.setRangeText(&quot;xyz&quot;);
+    el.defaultValue = &quot;set range text&quot;;
+    assert_equals(el.value, sometext.slice(0, 4) + &quot;xyz&quot; + sometext.slice(6),
+                  &quot;Calling setRangeText should set the value dirty flag&quot;);
+  }, `value dirty flag behavior after setRangeText on ${data.desc}`);
+}
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionselectionhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -14,18 +14,24 @@
</span><span class="cx">   var dirs = ['forward', 'backward', 'none'];
</span><span class="cx">   var sampleText = &quot;0123456789&quot;;
</span><span class="cx"> 
</span><del>-  var createInputElement = function(value) {
</del><ins>+  var createInputElement = function(value, append = true) {
</ins><span class="cx">     var el = document.createElement(&quot;input&quot;);
</span><span class="cx">     el.type = &quot;text&quot;;
</span><span class="cx">     el.value = value;
</span><del>-    body.appendChild(el);
</del><ins>+    el.id = &quot;input&quot; + (append ? &quot;-appended&quot; : &quot;-not-appended&quot;);
+    if (append) {
+      body.appendChild(el);
+    }
</ins><span class="cx">     return el;
</span><span class="cx">   };
</span><span class="cx"> 
</span><del>-  var createTextareaElement = function(value) {
</del><ins>+  var createTextareaElement = function(value, append = true) {
</ins><span class="cx">     var el = document.createElement(&quot;textarea&quot;);
</span><span class="cx">     el.value = value;
</span><del>-    body.appendChild(el);
</del><ins>+    el.id = &quot;textarea&quot; + (append ? &quot;-appended&quot; : &quot;-not-appended&quot;);
+    if (append) {
+      body.appendChild(el);
+    }
</ins><span class="cx">     return el;
</span><span class="cx">   };
</span><span class="cx"> 
</span><span class="lines">@@ -82,51 +88,76 @@
</span><span class="cx">   }, &quot;test if non-ascii selection text is correct for textarea&quot;);
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-  test(function() {
-    var el = createInputElement(sampleText);
-    // If there is no selection, then it must return the offset(in logical order)
-    // to the character that immediately follows the text entry cursor.
-    assert_equals(el.selectionStart, el.value.length, &quot;SelectionStart offset without selection&quot;);
-    el.select();
-    assert_equals(el.selectionStart, 0, &quot;SelectionStart offset&quot;);
-    el.parentNode.removeChild(el);
-  }, &quot;test SelectionStart offset for input&quot;);
</del><ins>+  for (var append of [true, false]) {
+    test(function() {
+      var el = createInputElement(sampleText, append);
+      // If there is no selection, then it must return the offset(in logical order)
+      // to the character that immediately follows the text entry cursor.
+      assert_equals(el.selectionStart, el.value.length,
+                    &quot;SelectionStart offset without selection in &quot; + el.id);
+      if (!el.parentNode) {
+        return;
+      }
+      el.select();
+      assert_equals(el.selectionStart, 0, &quot;SelectionStart offset&quot;);
+      el.parentNode.removeChild(el);
+    }, &quot;test SelectionStart offset for input that is &quot; +
+         (append ? &quot;appended&quot; : &quot; not appended&quot;));
+  }
</ins><span class="cx"> 
</span><ins>+  for (var append of [true, false]) {
+    test(function() {
+      var el = createTextareaElement(sampleText, append);
+      // If there is no selection, then it must return the offset(in logical order)
+      // to the character that immediately follows the text entry cursor.
+      assert_equals(el.selectionStart, el.value.length,
+                    &quot;SelectionStart offset without selection in &quot; + el.id);
+      if (!el.parentNode) {
+        return;
+      }
+      el.select();
+      assert_equals(el.selectionStart, 0, &quot;SelectionStart offset&quot;);
+      el.parentNode.removeChild(el);
+    }, &quot;test SelectionStart offset for textarea that is &quot; +
+         (append ? &quot;appended&quot; : &quot; not appended&quot;));
+  }
</ins><span class="cx"> 
</span><del>-  test(function() {
-    var el = createTextareaElement(sampleText);
-    // If there is no selection, then it must return the offset(in logical order)
-    // to the character that immediately follows the text entry cursor.
-    assert_equals(el.selectionStart, el.value.length, &quot;SelectionStart offset without selection&quot;);
-    el.select();
-    assert_equals(el.selectionStart, 0, &quot;SelectionStart offset&quot;);
-    el.parentNode.removeChild(el);
-  }, &quot;test SelectionStart offset for textarea&quot;);
</del><ins>+  for (var append of [true, false]) {
+    test(function() {
+      var el = createInputElement(sampleText, append);
+      // If there is no selection, then it must return the offset(in logical order)
+      // to the character that immediately follows the text entry cursor.
+      assert_equals(el.selectionEnd, el.value.length,
+                    &quot;SelectionEnd offset without selection in &quot; + el.id);
+      if (!el.parentNode) {
+        return;
+      }
+      el.select();
+      assert_equals(el.selectionEnd, el.value.length, &quot;SelectionEnd offset&quot;);
+      el.parentNode.removeChild(el);
+    }, &quot;test SelectionEnd offset for input that is &quot; +
+         (append ? &quot;appended&quot; : &quot; not appended&quot;));
+  }
</ins><span class="cx"> 
</span><span class="cx"> 
</span><del>-  test(function() {
-    var el = createInputElement(sampleText);
-    // If there is no selection, then it must return the offset(in logical order)
-    // to the character that immediately follows the text entry cursor.
-    assert_equals(el.selectionEnd, el.value.length, &quot;SelectionEnd offset without selection&quot;);
-    el.select();
-    assert_equals(el.selectionEnd, el.value.length, &quot;SelectionEnd offset&quot;);
-    el.parentNode.removeChild(el);
-  }, &quot;test SelectionEnd offset for input&quot;);
</del><ins>+  for (var append of [true, false]) {
+    test(function() {
+      var el = createTextareaElement(sampleText, append);
+      // If there is no selection, then it must return the offset(in logical order)
+      // to the character that immediately follows the text entry cursor.
+      assert_equals(el.selectionEnd, el.value.length,
+                    &quot;SelectionEnd offset without selection in &quot; + el.id);
+      if (!el.parentNode) {
+        return;
+      }
+      el.select();
+      assert_equals(el.selectionEnd, el.value.length, &quot;SelectionEnd offset&quot;);
+      el.parentNode.removeChild(el);
+    }, &quot;test SelectionEnd offset for textarea that is &quot; +
+         (append ? &quot;appended&quot; : &quot; not appended&quot;));
+  }
</ins><span class="cx"> 
</span><del>-
</del><span class="cx">   test(function() {
</span><del>-    var el = createTextareaElement(sampleText);
-    // If there is no selection, then it must return the offset(in logical order)
-    // to the character that immediately follows the text entry cursor.
-    assert_equals(el.selectionEnd, el.value.length, &quot;SelectionEnd offset without selection&quot;);
-    el.select();
-    assert_equals(el.selectionEnd, el.value.length, &quot;SelectionEnd offset&quot;);
-    el.parentNode.removeChild(el);
-  }, &quot;test SelectionEnd offset for textarea&quot;);
-
-
-  test(function() {
</del><span class="cx">     var el = createInputElement(sampleText);
</span><span class="cx">     assert_in_array(el.selectionDirection, dirs, &quot;SelectionDirection&quot;);
</span><span class="cx">     el.select();
</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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -25,6 +25,8 @@
</span><span class="cx"> PASS input setSelectionRange(NaN,1) 
</span><span class="cx"> PASS input setSelectionRange(null,1) 
</span><span class="cx"> PASS input setSelectionRange(undefined,1) 
</span><ins>+FAIL input setSelectionRange(Math.pow(2,32) - 2, Math.pow(2,32) - 1) assert_equals: element.selectionStart should be value.length expected 5 but got 0
+FAIL input setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1) assert_equals: element.selectionStart should be value.length expected 5 but got 0
</ins><span class="cx"> TIMEOUT input setSelectionRange fires a select event Test timed out
</span><span class="cx"> PASS test of textarea.setSelectionRange 
</span><span class="cx"> PASS textarea typeof(input.setSelectionRange)' 
</span><span class="lines">@@ -46,4 +48,6 @@
</span><span class="cx"> PASS textarea setSelectionRange(NaN,1) 
</span><span class="cx"> PASS textarea setSelectionRange(null,1) 
</span><span class="cx"> PASS textarea setSelectionRange(undefined,1) 
</span><ins>+FAIL textarea setSelectionRange(Math.pow(2,32) - 2, Math.pow(2,32) - 1) assert_equals: element.selectionStart should be value.length expected 5 but got 0
+FAIL textarea setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1) assert_equals: element.selectionStart should be value.length expected 5 but got 0
</ins><span class="cx">   
</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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -138,6 +138,22 @@
</span><span class="cx">     assert_equals(input.selectionStart, 0, &quot;element.selectionStart should be 0&quot;);
</span><span class="cx">     assert_equals(input.selectionEnd, 1, &quot;element.selectionEnd should be 1&quot;);
</span><span class="cx">   },'input setSelectionRange(undefined,1)');
</span><ins>+
+  test(function() {
+    input.setSelectionRange(Math.pow(2,32) - 2, Math.pow(2,32) - 1);
+    assert_equals(input.selectionStart, input.value.length,
+                 &quot;element.selectionStart should be value.length&quot;);
+    assert_equals(input.selectionEnd, input.value.length,
+                  &quot;element.selectionEnd should be value.length&quot;);
+  }, 'input setSelectionRange(Math.pow(2,32) - 2, Math.pow(2,32) - 1)');
+
+  test(function() {
+    input.setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1);
+    assert_equals(input.selectionStart, input.value.length,
+                 &quot;element.selectionStart should be value.length&quot;);
+    assert_equals(input.selectionEnd, input.value.length,
+                  &quot;element.selectionEnd should be value.length&quot;);
+  }, 'input setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1)');
</ins><span class="cx"> },&quot;test of input.setSelectionRange&quot;);
</span><span class="cx"> 
</span><span class="cx"> async_test(function() {
</span><span class="lines">@@ -257,5 +273,21 @@
</span><span class="cx">     assert_equals(textarea.selectionStart, 0, &quot;element.selectionStart should be 0&quot;);
</span><span class="cx">     assert_equals(textarea.selectionEnd, 1, &quot;element.selectionStart should be 1&quot;);
</span><span class="cx">   },'textarea setSelectionRange(undefined,1)');
</span><ins>+
+  test(function() {
+    textarea.setSelectionRange(Math.pow(2,32) - 2, Math.pow(2,32) - 1);
+    assert_equals(textarea.selectionStart, textarea.value.length,
+                 &quot;element.selectionStart should be value.length&quot;);
+    assert_equals(textarea.selectionEnd, textarea.value.length,
+                  &quot;element.selectionEnd should be value.length&quot;);
+  }, 'textarea setSelectionRange(Math.pow(2,32) - 2, Math.pow(2,32) - 1)');
+
+  test(function() {
+    textarea.setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1);
+    assert_equals(textarea.selectionStart, textarea.value.length,
+                 &quot;element.selectionStart should be value.length&quot;);
+    assert_equals(textarea.selectionEnd, textarea.value.length,
+                  &quot;element.selectionEnd should be value.length&quot;);
+  }, 'textarea setSelectionRange(Math.pow(2,31), Math.pow(2,32) - 1)');
</ins><span class="cx"> },&quot;test of textarea.setSelectionRange&quot;);
</span><span class="cx"> &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsformstextfieldselectionw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -19,5 +19,7 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-after-content-change.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-start-end.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-value-interactions.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementcenteringexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+CONSOLE MESSAGE: line 27: TypeError: document.querySelector(&quot;dialog&quot;).showModal is not a function. (In 'document.querySelector(&quot;dialog&quot;).showModal()', 'document.querySelector(&quot;dialog&quot;).showModal' is undefined)
+
+FAIL horizontal-tb: tall viewport assert_equals: expected &quot;45px&quot; but got &quot;auto&quot;
+FAIL horizontal-tb: wide viewport assert_equals: expected &quot;15px&quot; but got &quot;auto&quot;
+FAIL horizontal-tb: square viewport assert_equals: expected &quot;45px&quot; but got &quot;auto&quot;
+FAIL horizontal-tb: dialog and viewport match assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL horizontal-tb: dialog bigger than viewport assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL vertical-rl: tall viewport assert_equals: expected &quot;10px&quot; but got &quot;auto&quot;
+FAIL vertical-lr: tall viewport assert_equals: expected &quot;10px&quot; but got &quot;auto&quot;
+FAIL vertical-lr: dialog bigger than viewport assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL vertical-rl (dialog horizontal-tb): tall viewport assert_equals: expected &quot;10px&quot; but got &quot;auto&quot;
+FAIL vertical-lr (dialog horizontal-tb): tall viewport assert_equals: expected &quot;10px&quot; but got &quot;auto&quot;
+FAIL vertical-lr (dialog horizontal-tb): dialog bigger than viewport assert_equals: expected &quot;0px&quot; but got &quot;auto&quot;
+FAIL horizontal-tb (container vertical-rl): tall viewport assert_equals: expected &quot;10px&quot; but got &quot;auto&quot;
+FAIL vertical-rl (container horizontal-tb): tall viewport assert_equals: expected &quot;45px&quot; but got &quot;auto&quot;
+FAIL horizontal-tb (container vertical-rl) (dialog horizontal-tb): tall viewport assert_equals: expected &quot;10px&quot; but got &quot;auto&quot;
+FAIL vertical-rl (container horizontal-tb) (dialog vertical-rl): tall viewport assert_equals: expected &quot;45px&quot; but got &quot;auto&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementcenteringiframesubhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;dialog element centered frame&lt;/title&gt;
+&lt;style&gt;
+  html {
+    writing-mode: {{GET[html-writing-mode]}}
+  }
+
+  #container {
+    writing-mode: {{GET[container-writing-mode]}}
+  }
+
+  dialog {
+    writing-mode: {{GET[dialog-writing-mode]}};
+    border: none;
+    padding: 0;
+    margin: 0;
+  }
+&lt;/style&gt;
+
+&lt;div id=&quot;container&quot;&gt;
+  &lt;dialog style=&quot;width: 20px; height: 10px;&quot;&gt;X&lt;/dialog&gt; &lt;!--  sync width and height with centering.html  --&gt;
+&lt;/div&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+document.querySelector(&quot;dialog&quot;).showModal();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementcenteringhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;dialog element: centered alignment&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=help href=&quot;https://html.spec.whatwg.org/multipage/#centered-alignment&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;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// Be sure to sync with centering-iframe.html
+const DIALOG_WIDTH = 20;
+const DIALOG_HEIGHT = 10;
+
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;&quot;, &quot;&quot;, &quot;tall viewport&quot;, 40, 100, &quot;top&quot;, 100 / 2 - DIALOG_HEIGHT / 2);
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;&quot;, &quot;&quot;, &quot;wide viewport&quot;, 100, 40, &quot;top&quot;, 40 / 2 - DIALOG_HEIGHT / 2);
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;&quot;, &quot;&quot;, &quot;square viewport&quot;, 100, 100, &quot;top&quot;, 100 / 2 - DIALOG_HEIGHT / 2);
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;&quot;, &quot;&quot;, &quot;dialog and viewport match&quot;, DIALOG_WIDTH, DIALOG_HEIGHT, &quot;top&quot;, 0);
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;&quot;, &quot;&quot;, &quot;dialog bigger than viewport&quot;, 100, DIALOG_HEIGHT / 2, &quot;top&quot;, 0);
+
+testDialogCentering(&quot;vertical-rl&quot;, &quot;&quot;, &quot;&quot;, &quot;tall viewport&quot;, 40, 100, &quot;left&quot;, 40 / 2 - DIALOG_WIDTH / 2);
+testDialogCentering(&quot;vertical-lr&quot;, &quot;&quot;, &quot;&quot;, &quot;tall viewport&quot;, 40, 100, &quot;right&quot;, 40 / 2 - DIALOG_WIDTH / 2);
+testDialogCentering(&quot;vertical-lr&quot;, &quot;&quot;, &quot;&quot;, &quot;dialog bigger than viewport&quot;, DIALOG_WIDTH / 2, 100, &quot;right&quot;, 0);
+
+testDialogCentering(&quot;vertical-rl&quot;, &quot;&quot;, &quot;horizontal-tb&quot;, &quot;tall viewport&quot;, 40, 100, &quot;left&quot;, 40 / 2 - DIALOG_WIDTH / 2);
+testDialogCentering(&quot;vertical-lr&quot;, &quot;&quot;, &quot;horizontal-tb&quot;, &quot;tall viewport&quot;, 40, 100, &quot;right&quot;, 40 / 2 - DIALOG_WIDTH / 2);
+testDialogCentering(&quot;vertical-lr&quot;, &quot;&quot;, &quot;horizontal-tb&quot;, &quot;dialog bigger than viewport&quot;, DIALOG_WIDTH / 2, 100, &quot;right&quot;, 0);
+
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;vertical-rl&quot;, &quot;&quot;, &quot;tall viewport&quot;, 40, 100, &quot;right&quot;, 40 / 2 - DIALOG_WIDTH / 2);
+testDialogCentering(&quot;vertical-rl&quot;, &quot;horizontal-tb&quot;, &quot;&quot;, &quot;tall viewport&quot;, 40, 100, &quot;top&quot;, 100 / 2 - DIALOG_HEIGHT / 2);
+
+testDialogCentering(&quot;horizontal-tb&quot;, &quot;vertical-rl&quot;, &quot;horizontal-tb&quot;, &quot;tall viewport&quot;, 40, 100, &quot;right&quot;, 40 / 2 - DIALOG_WIDTH / 2);
+testDialogCentering(&quot;vertical-rl&quot;, &quot;horizontal-tb&quot;, &quot;vertical-rl&quot;, &quot;tall viewport&quot;, 40, 100, &quot;top&quot;, 100 / 2 - DIALOG_HEIGHT / 2);
+
+function testDialogCentering(writingMode, containerWritingMode, dialogWritingMode, label, iframeWidth, iframeHeight, property, numericValue) {
+  async_test(t =&gt; {
+    const iframe = document.createElement(&quot;iframe&quot;);
+    iframe.src = `centering-iframe.sub.html?html-writing-mode=${writingMode}&amp;container-writing-mode=${containerWritingMode}&amp;dialog-writing-mode=${dialogWritingMode}`;
+    iframe.width = iframeWidth;
+    iframe.height = iframeHeight;
+    iframe.onload = t.step_func_done(() =&gt; {
+      const dialog = iframe.contentDocument.querySelector(&quot;dialog&quot;);
+      assert_equals(iframe.contentWindow.getComputedStyle(dialog)[property], numericValue + &quot;px&quot;);
+    });
+    document.body.appendChild(iframe);
+  }, writingMode + (containerWritingMode ? ` (container ${containerWritingMode})` : &quot;&quot;) +
+     (dialogWritingMode ? ` (dialog ${dialogWritingMode})` : &quot;&quot;) + `: ${label}`);
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsinteractiveelementsthedialogelementw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</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/html/semantics/interactive-elements/the-dialog-element/centering-iframe.sub.html
+/LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/centering.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/contains.json
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-close.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/interactive-elements/the-dialog-element/dialog-open.html
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlsemanticsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/semantics/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,5 +15,6 @@
</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/OWNERS
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/semantics/interfaces.js
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapisthewindoworworkerglobalscopemixinWorker_Self_Originhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/the-windoworworkerglobalscope-mixin/Worker_Self_Origin.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,8 +1,8 @@
</span><span class="cx"> &lt;!DOCTYPE html&gt;
</span><span class="cx"> &lt;meta charset=utf-8&gt;
</span><span class="cx"> &lt;title&gt;Test workers self.origin&lt;/title&gt;
</span><del>-&lt;script src=&quot;../../../../../../resources/testharness.js&quot;&gt;&lt;/script&gt;
-&lt;script src=&quot;../../../../../../resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</del><ins>+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</ins><span class="cx"> &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</span><span class="cx"> &lt;script&gt;
</span><span class="cx"> function assertOriginWorker(workerSource, expectedOrigin, testName) {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesetintervalexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Negative timeout in setInterval 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesetintervalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Negative timeout in setInterval&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;
+var i = 0;
+var interval;
+function next() {
+  i++;
+  if (i === 20) {
+    clearInterval(interval);
+    done();
+  }
+}
+setTimeout(assert_unreached, 1000);
+interval = setInterval(next, -100);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesettimeoutexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Negative timeout in setTimeout 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersnegativesettimeouthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Negative timeout in setTimeout&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;
+ setTimeout(done, -100);
+ setTimeout(assert_unreached, 10);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsetintervalexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Type long timeout for setInterval 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsetintervalhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Type long timeout for setInterval&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;
+var interval;
+function next() {
+  clearInterval(interval);
+  done();
+}
+interval = setInterval(next, Math.pow(2, 32));
+setTimeout(assert_unreached, 100);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsettimeoutexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Type long timeout for setTimeout 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimerstypelongsettimeouthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Type long timeout for setTimeout&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;
+setTimeout(done, Math.pow(2, 32));
+setTimeout(assert_unreached, 100);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestshtmlwebappapistimersw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -16,3 +16,7 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/evil-spec-example.html
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-setinterval.html
+/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.html
+/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-setinterval.html
+/LayoutTests/imported/w3c/web-platform-tests/html/webappapis/timers/type-long-settimeout.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsimagespatternogv"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+OggS\xE6Y\xA2&gt;\xA4KIL*\x80theora \xB0\xD8OggS\xE6Y\xA2&gt;\xE9\xF7J\xDE?\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90\x81theora +Lavf57.26.100encoder=Lavc57.24.105 libtheora\x82theora\xBE\xCD(\xF7\xB9\xCDk\xB5\xA9IJs\x9C\xE61\x8CR\x94\xA4!1\x8Cb\x84!@m\xAESg\x92\xC8\xFCV\xFCx9[l\xE6*\xF5h\xABT()$Z\xFEy9\x9B\x8DfS        x\xB2U)\x93\x89$\x82|&lt;\x8E\xA3A\x80\xBCV*        b!|&lt; \x86\xC1@\x888\xDA\xE56y,\x8F\xC5a/ǃ\x95\xB6\xCEb\xAFV\x8A\xB5B\x812\x92E\xA1瓙\xB8\xD6e0\x97\x8B%R\x998\x92H!\x90\x87\xC3\xC1\xD8\xE0j4 \xC5b\xA1@\x90F&quot;\x87\xC3\xC1\xC0\xC8`,\x83\x81@\xB0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xC0\xC0\xF1!AAP\xD0\xD0\xE1!QQ@\xE0\xE0\xF1
 !AQQP\xE11AQQQAQQQQQ!1AQQQQQAQQQQQQQQQQQQQQQ\xC0\xB1A\x91\xB1\xC0\xD0\xD0\xE1!Q\xC1\xC1\xB0\xE0\xD1A\x91\xC1\xC1\xC0\xE11a\xB1\xD1\xD1\xC11\x91\xC1\xC1\xE1\xE1\xD1A\x81\xB1\xC1\xD1\xE1\xE1ѱ\xC1\xD1\xD1\xE1\xE1\xE1\xE1\xD1\xD1\xD1\xD1\xE1\xE1\xE1\xD1\xB0\xA1\x82\x833\xD0\xC0\xC0\xE11\xA3\xA3\xC3p\xE0\xD1\x82\x83\x94S\x80\xE1a\xD35u\xE1!bS\xA4F\xD6tт3t\x87\xC3\xE5vw\x97\x86T\x85\xC5\xF6'Fv11111111111111111111111111111111111111111111111111111111111111111!!Q\x91\xA1\xA1\xA1\xA1!Aa\xA1\xA1\xA1\xA1\xA1Qa\x91\xA1\xA1\xA1\xA1\xA1\x91\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1\xA1!a\xF2BBBA!A\x82&quot;BBBAa\x82BBBBA\xF2&quot;BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA!\x82\xF66661!Q\xA4&amp;6661\x81\xA3\x8666662\xF4&amp;66666666666666666666666666666666666661QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ!!!Qq\x81\x91\xB1!!Qq\x81\x91\xB1\xC1!Qq\x81\
 x91\xB1\xC1\xD1Qq\x81\x91\xB1\xC1\xD1\xD1q\x81\x91\xB1\xC1\xD1\xD1с\x91\xB1\xC1\xD1\xD1\xD1ᑱ\xC1\xD1\xD1\xD1\xE1\xE1\xB1\xC1\xD1\xD1\xD1\xE1\xE1\xE1Aq\xA1\xC2Aq\xA1\xC2!Aq\xA1\xC2&quot;QAq\xA1\xC2&quot;RQq\xA1\xC2&quot;RRQ\xA1\xC2&quot;RRR\x91\xC2&quot;RRR\x92\xA2&quot;RRR\x92\xA2\xA1A\x81\xC2\x81A\x81\xC2\x83A\x81\xC2\x83A\x81\xC2\x83\x81\xC2\x83\xC2\x83\x83\x83|^\t}^\xDC\xEC?/\xAE\xB0f'|\x85\xC1\xD5{r\xCCE\xBA\x8E7\xC0~\xE5D\xBD\xC1\xB1\x92\xFA\xD5R4̮\xC5؄        \xC8\xC1\xEDL\x97\xCEa\xB5\xAB +\x8C\xAAR\xBC\xFBw\xC9;\x88i\x99]\x8B\xB1/\x91G\x86\xABPld\xBC~r\xEEbWG\xB4y'        \xF7UHA\x8A\xE6\xA9\xF7UH\xAEƂ3\x94҃\xDA&lt;\xEB\xB9!\xC0\xCA\xD6co\x9C?\x8A\xF0\xBC\xF3\xB7\xFC'\xA6\xD1\xE7RD\xC6\xEA\xD6fSPk\xBE-!G\xF6\x81z\xF1\xB1̻#@\xEEP{G\x9Dr\x9Bmw\xB0W*\x8C\xBE$\xFF\x8BE\xACr\xB8D;\x9B_\xEE!i ŕ\xA07NJ\xE4P\xF7o:\x92\xF5T\x95\xF38N\x95\xAC\xD8.7\x8A]\x81\xA4\x81\xC9⇻u\xDF\xFFd\xC6\xF2\xD8)\xB3\xC0\xB4\xEB;\x8E,
 Vc\x80ʎF\x8DD\xD2ɵ\xFFԥ\xB9\xD9X|'\xD2ɴx-\xE03\xEA\xE8VZcɕ\xFFԥ\xB9        \xAD\xBC\xEC\xD4E\xFF\xD8\xF9}        \xB9\x84\xEC\xFA[`\xADp&amp;\x96Mt\xC5\xE6N\xEFUH\x80$\xD7\xEBܽN&amp;\x97j +γa\xD47 + +?\xC5G~p\xAA\x92\x94ѝdģ_\x85\x95\x8B\xC9ɥ\xDAG\x9D\xB8s\x87q\xEEl\xE9mE(\xAEp\xC5\xEBYE\x95\x8F$_\xDBw!6\xD4}\x98\x8Cá?\xFAd\xB6\x8AP#\x84YY\xBA\xF3\xEDI\xE6~ڄD\xB9\xB0\xE8Zd\xF7N \x98\xF8\x91\xCFuR,\xAC_(}\xEF\x80ډ\xFFצxF&quot;\x90e\xC3\xDC\xDA.;\xD3x` \xEBY\xA8\x80\xEA|\xBA\xA1N+[\x9Erv\x88\xF4\x95D\xD2G\xF9\xA6F\xE6ή\xC0\x87\xF3\xA7qm\x8A\xE7\xD0
+jihp\xE5M+\xDA$\xF3\\x8C7\xCC\xB9\x86\xF6\x93\x95\xD8\xC6\xE0#\xDB\xF7qg\xB4K'\x9DT\xA73'\xD0-a\xB8;6
+&amp;\xF6Y&quot;k +\xED\xE7+\xC5f`\xE5\xD4zd\xB8\xFF\x8F\x8A\xA9Z\xC2\xFA\xF60\xE4\xDCk\xDA.\x9C\xC2,\xADs\xE1+b\x89\xBD\x92= Y\xBF\xE1U&quot;\x97\xC4o;\xFC\x9D\xC6h,\xDC݀jLmG\xB2\xC9N\x8BY9\x84\xC6\xFA\x85T\x8C\xB9:\xCE\xFCn\x84\xC5 +\xB5\xF6];\xB1]\xA4\x97\xCEy*RF\xEF C\xF6)&lt;\xADc\x89\xC7.\xA2Csp\xCCP\xDB_f\x97+\xFE\xB8\x9Cb͢$d\x84\xD2\xED\xAD\xC77\x9D\xFB\xE0\xFAՕ\x82\x88p\xFFq\x97PT*\xA4;h        \xA5\xDAMh\xE6\xE1\x9C7\xC0&gt;\xB4\xFC\xF5]XVy\x84\xEḎ\xE0R&quot;P +\xA6\x97Y4\x85G\xB9x\xB4þG\xD6+1g\xE4        \xEEoPY]Jw        \xEE#͵\x97I2\x85\xC1\xBE\x85\xE1\xDAߎLb\xFEU'&quot;L\x98c\xE4\xEEb\xB4u\xF2s\x88\xCA\xB6\xB3i.w\xAE\xFDeb\xAAHV\xBD\x9Fr\xA3.\xFDegE\xF2v\xE4a\x884m\xAC\xD9ʣ(\x85T\xB7\x9BF\xDA匷}        \x87\x85\xECM\xF8\x8A\xC5i;:Z\xF6t|\x88*R\xE0z1jɦtav\xA1V\xB5=\xC4h\xBAK \x9B\xFF\xB95\xDD=\xE6'$M\xA8\x86u\x8B)U\x91sC\xA7a4\xB2{\xE7\xD8Z\xF9\xC3̷?;G\xAF3\x8B+\h\xE9&amp;\x97i=\xA3\x9A\x8C\xE0\xB4Z\xBE\xE7\xB7\x9C +\xB6\x9B_|\xC2\xE0
 G|\xE5YeJX\xB3u|\xCB
+U\xBA\x86s\xD6Yix\xA6m\xAC\x9AG\x9F'\x8E\xD1=\xA2p\xFA\xEAU\xB2 +\xA6m\xAC\x9E\xC6\xFE\xF0v\x89F~a\xC2\xDB
+\xE0nc \xE2\xCF\xF9SP\xB5 \xE3\xB3\xDAcI\x9Bk,\x99:\xBE\xB2\xC5\xDE\xE0\x8A=\xC6\xE4\xFF\xAE\xE5E d6\xD53L塎\xBA\x8A\xB2\xC4?#=\x92\xF7\x8DЭ\xA84\xCC\xDB\XM?h\xD8SP\x8B\xE3\xA99\x92\xFBto8R:\xBF\x84\xE6\xF2&gt;\xB4!\xA3\xBF\xD0 \xD1ڤM.\x91\xE5\xE9ee\xDEn)\xDC\xF3\x85\xBFP\xDD\xCA\xF0\x90M+mt\xCE&lt;\xBBcAed\xEFz\xA8R\xF8bH6\xD5+I\xB3ʈ[\xB8u\xE8~a+\xFCW`\x9F\x95\xAB\xBBAPޥ0k\xA2෧ވK\xC9 ͵J\xD2l\x98\xE1\xFF\x87)\xD4F\xB2\xB1\xBDJP\xF0\xF4$^\xC1\x8B!\xB6\xA9\x9Ag/\xFE\xC09N\xBA\x82߫x\xB1c\xCAU8$/J\xC0m\xA9\x94\xCD3\xC6\xE4\xF6\x88Qs\xF5\xF2\x8F\xD6VF\xEF\xADǕ)\xFD#\x9FH\xAC\xAC\x8C\x932i\x9Bmq\xBB\xFE\xA2\xA7KG\x88\xCEB\xE9\x8B\xCCbi\x9Bmh\xB7\xD9@R:\xEE\xC5iI\xFF\xF8\x85\xC4M\xFC\x8Fa4\xA3\xA8        \xD8p\x97\xC3{\x8CY\xF3Y`DHJ\xDAmc\xEF\xCB\xD6\xD4*\xA4\xB8˿0M+mt\x934T_\xF0~\xEB\xD7 1A\xB9m\x8A\xC8y\x9CUHFHJi3ms\xA2\xF7,p!\xF3\xE0v\xCA/\xED\xF5\xC6\xE2{\xACW
+1\xBF\xF4\xFC\xC0\xA6\xA1j\xEF \xCC\xD2f\xDA˖#\xEE´/z8\xFBq\xB9\xD0\xC4\xC91\xA6m\xB5\x95F        /Gʚ\x88&gt;\xAC\xB0\x9F\xB7\xB7\xF0#q&lt;\x9F9\x89U$O\xB4\xB2\xB1\xDFQ\xB8
+mY4\xCF/\x96\xEF\xE3\xF4끦m\xB50\xA1\x967\xCD$hOe\xFA\xAADO-\xADa\xDF\8\x94\x85\xC9\xD7\xFD\xEEUIedBsᶪ^\xB8\xCB\x99\xFB3\xCBc^\xF1J\xA7ւ\x806\xD5+I\xA4\xCE&lt;y!\xBE\xE4ݰe\x9F\xCB\xEE)\xA9\x87P\x8F\xF2\xAE\xC0_\xDF-P`H%i1\xB6\xB9\xE5\x8CM޻\xFCSP\xEF\xE7V\xC0=#\x8B\x95\x95\x9EnB\xFC\xBD##me&amp;i\x9EW\xD1\xC0YYP\xA9\xA8#|\xB8\xBC2\x99\xA6r\x8D\xB5\xC7        \xAD\xA2\xCDޏ\xE7\xCAG\xD3\x{2A91FD0}\x94wŊ\xC2\xE4\xABƙ\xB6\xD4\xC2fX\xFFoA\xBC^\x82\xD7\xFFwDž\x95\x82U\xC3,Zfm\xAAf\xCFG): G
+\xAAJQ\x9B\xBB\xEA&quot;G\xB9% \xA6a\xE3mL\xB1i\x9F\xCA\xCF\xE1\xEC5R\x80\x8CYX\xE3~\xC9\\x89\x94Nm\xAB\xFF\x86X\xB4̺\xD6\xF5\xE9\xC9!&lt;\xB5MA +\xCE'0$4\xCC\xDBYrǻ
+\xF7
+#E\xCEz\xBFNH +\xB52\x99\xA6r\xB1\xC2\xFB\xAAS\xF1\xCFˆ\xADܱǪ\xCE\xE3\x84SQ\xA5\xBC\xF8@F\xA1!(i\x9BmL&amp;e\x8D\xF7n\xF7Ŋ\xC9\xFEuF\x96-36\xD53 \xEE\x97\xF4\xFFr\xB2\xB55|\x80\xDDE\xBDp\xEB\xB1\xE9\xC9B\xD3\xF9\x83,Zfm\xAA\xE6\xCF\xDE\xE8*)x\xE2\xC25n\x92\xFC\x85\x83x\xC9!\x88\x80p: pg\x91l\xEB\xEEL\xF8\xD7G\xFBr\xA3\xBFK+y*\xAAF\xF1\x92C\xE0t\xE0\xCF&quot;\xD9\xD7ܙ\xF1\xAE\x8F\xF6\xE5G~\x96V\xF2UT\x8D\xE3$\x86&quot;\xC0\xE81\xC1\x9EE\xB3\xAF\xB93\xE3]\xEDʎ\xFD,\xAD䪩Rp\x9F\xA8\xF0L\xD33me\xCAF8C\xE2\xCAż\xBE\xF4]\xD9\xEE c\x86\xA5/\\xBF\xA0Y\\x9B\x85\xC9 \x8C\xA6i\x99\xB6\xB2\xDF?&quot;\xE8\xE7\xE7\xCAU,\xACQ\xAD\xE1@pH^\x94i\x9BmI\x99c\x85ݣ[\xD0YY\xCA\xD7\xD3\xF8F\xE1'm\xFD Bt~\x940\x99\x96+\xCD3m\xAD\xD4D\xA6\xA2\x93ȁ\xF4\xF4v\xE3\x9FB\xBB#\x80n-?b\xD32f\x9Bkt\xBDI +BOVWJ\xA4y\xF2e\xF7N\xB4k\xA3\xFD\x8Cpg\x94\xBC\xBBp\xA3\xA8\xC8\xA3$        Eְ\xBC\x99D\xE7}?\xFA\xC5`\xDBW&lt;b\xD3=\xFD\xF2%T\x95R\x80\x8CYX\xE3~\xC9\\x89\x94Nm\xAB\xFF\x8
 6X\xB4̺\xD6\xF5\xE9\xC9!OggS@\xE6Y\xA2&gt;\xA5V\xA7\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK\xE6Y\xA2&gt;\xC1Ϝ\xB6 OggS@\xE6Y\xA2&gt;\xC7.+L\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|
 a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK\xE6Y\xA2&gt;\xBD\xFBl OggS@\xE6Y\xA2&gt;\xE67\xA7\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!
 n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK\xE6Y\xA2&gt;\x89ٲ\xA3 OggS@        \xE6Y\xA2&gt;\xFF\xFA\x89L\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\
 x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK        \xE6Y\xA2&gt;        e\xC1sS OggS@ \xE6Y\xA2&gt;
+\xDE•\xA7\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK \xE6Y\xA2&gt; Q\xE3\xC0\x9C OggS@\xE6Y\xA2&gt; I\xE8L\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\
 xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK\xE6Y\xA2&gt; +-\xD7]F OggS@\xE6Y\xA2&gt;\xBB\xD0\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\
 xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK\xE6Y\xA2&gt;\x80w=\x90 OggS@\xE6Y\xA2&gt;\xF4\xCDc-\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;
 g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3OggSK\xE6Y\xA2&gt;\xA2\xCA&amp;% OggS@\xE6Y\xA2&gt;\x99\xBCO?\xFF*,\xC1\xC8]P\xE0\xC0\x84`\xBC$q\xB0\xC2G\x93\xB0 +\x8EC\x9F\x85›\xC1Y\xD2`\xBCYy\x9B\x8E\x95\xACV:G\xECpr\xF1\x8C\xC2fj]`di\xFA\xB4|a(\xE8F\x93 +Е\xA1\xE8B\x81?&gt;\x84&lt;#W\xE0\xACӜ\x9AS\x9B}F$p\x97}G\x97W\x99\x83L^\xAA= \xF5\xD9iǔ\xFB\x89\xB1\xBBr8\xCDg٢\xF6eE\xD2U\xA9\x89\xC1\x88(\xB5a8\xC2uT\xD1\xD3ԖJ\x97A\xD1V\xC9\xED~J\xE3!n\x8B\xB6u%\xDE^\xC9\xFE\xC9\xF3\xF2S\xC7\x{D8CB}\xDE\xEAm\xE4\x82\xE3qVO*\xC9!\xC1u珗F|\xFA\xE5\x9Dr &lt;N\x9B2\x8A\x92DĩN\xEF\xFC \x8FLB\xB3ͳf\xA6\x8E\xD7J\xEE3*g\xF9S9\x96fUr\xA5D\xA9Wv\xD1        \xDD۳\xAD\x9E\xAEl\xC1\x88\x97\xD5\xEB\xEC\xC7V\xB2&lt;\xDC\xE7q;g\x83c\xBAH\xA1h\xE7-\xAB!\xED\xF1\xA7\xBDmx\xD3
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsimagespatternpng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Index: trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png
</span><span class="cx">===================================================================
</span><del>--- trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png        2017-04-09 18:45:06 UTC (rev 215163)
</del><ins>+++ trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png        2017-04-09 18:49:22 UTC (rev 215164)
</ins><span class="cx">Property changes on: trunk/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<ins>+image/png
</ins><span class="cx">\ No newline at end of property
</span><a id="trunkLayoutTestsimportedw3cwebplatformtestsimagesw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/images/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/images/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/images/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -38,6 +38,8 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/images/green.svg
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/images/grgr-256x256.png
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/images/movie_300_frame_0.png
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/images/pattern.ogv
+/LayoutTests/imported/w3c/web-platform-tests/images/pattern.png
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/images/red-16x16.png
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/images/red-zeroheight.svg
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/images/red-zerosize.svg
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsinnerTextsetterexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,65 +1,128 @@
</span><del>-abc
</del><span class="cx"> 
</span><span class="cx"> PASS Simplest possible test 
</span><ins>+PASS Simplest possible test, detached 
</ins><span class="cx"> PASS Newlines convert to &lt;br&gt; in non-white-space:pre elements 
</span><del>-PASS Newlines convert to &lt;br&gt; in &lt;pre&gt; element 
-PASS Newlines convert to &lt;br&gt; in white-space:pre element 
</del><ins>+PASS Newlines convert to &lt;br&gt; in non-white-space:pre elements, detached 
+FAIL Newlines convert to &lt;br&gt; in &lt;pre&gt; element assert_equals: expected &quot;abc&lt;br&gt;def&quot; but got &quot;abc\ndef&quot;
+PASS Newlines convert to &lt;br&gt; in &lt;pre&gt; element, detached 
+FAIL Newlines convert to &lt;br&gt; in &lt;textarea&gt; element assert_equals: expected &quot;abc&lt;br&gt;def&quot; but got &quot;abc\ndef&quot;
+PASS Newlines convert to &lt;br&gt; in &lt;textarea&gt; element, detached 
+FAIL Newlines convert to &lt;br&gt; in white-space:pre element assert_equals: expected &quot;abc&lt;br&gt;def&quot; but got &quot;abc\ndef&quot;
+PASS Newlines convert to &lt;br&gt; in white-space:pre element, detached 
</ins><span class="cx"> PASS CRs convert to &lt;br&gt; in non-white-space:pre elements 
</span><del>-PASS CRs convert to &lt;br&gt; in &lt;pre&gt; element 
</del><ins>+PASS CRs convert to &lt;br&gt; in non-white-space:pre elements, detached 
+FAIL CRs convert to &lt;br&gt; in &lt;pre&gt; element assert_equals: expected &quot;abc&lt;br&gt;def&quot; but got &quot;abc\ndef&quot;
+PASS CRs convert to &lt;br&gt; in &lt;pre&gt; element, detached 
</ins><span class="cx"> PASS Newline/CR pair converts to &lt;br&gt; in non-white-space:pre element 
</span><ins>+PASS Newline/CR pair converts to &lt;br&gt; in non-white-space:pre element, detached 
</ins><span class="cx"> PASS Newline/newline pair converts to two &lt;br&gt;s in non-white-space:pre element 
</span><ins>+PASS Newline/newline pair converts to two &lt;br&gt;s in non-white-space:pre element, detached 
</ins><span class="cx"> PASS CR/CR pair converts to two &lt;br&gt;s in non-white-space:pre element 
</span><del>-PASS CRs convert to &lt;br&gt; in white-space:pre element 
</del><ins>+PASS CR/CR pair converts to two &lt;br&gt;s in non-white-space:pre element, detached 
+FAIL CRs convert to &lt;br&gt; in white-space:pre element assert_equals: expected &quot;abc&lt;br&gt;def&quot; but got &quot;abc\ndef&quot;
+PASS CRs convert to &lt;br&gt; in white-space:pre element, detached 
</ins><span class="cx"> PASS &lt; preserved 
</span><ins>+PASS &lt; preserved, detached 
</ins><span class="cx"> PASS &gt; preserved 
</span><ins>+PASS &gt; preserved, detached 
</ins><span class="cx"> PASS &amp; preserved 
</span><ins>+PASS &amp; preserved, detached 
</ins><span class="cx"> PASS &quot; preserved 
</span><ins>+PASS &quot; preserved, detached 
</ins><span class="cx"> PASS ' preserved 
</span><ins>+PASS ' preserved, detached 
</ins><span class="cx"> PASS innerText not supported on SVG elements 
</span><ins>+PASS innerText not supported on SVG elements, detached 
</ins><span class="cx"> PASS innerText not supported on MathML elements 
</span><ins>+PASS innerText not supported on MathML elements, detached 
</ins><span class="cx"> PASS Null characters preserved 
</span><ins>+PASS Null characters preserved, detached 
</ins><span class="cx"> PASS Tabs preserved 
</span><ins>+PASS Tabs preserved, detached 
</ins><span class="cx"> PASS Leading whitespace preserved 
</span><ins>+PASS Leading whitespace preserved, detached 
</ins><span class="cx"> PASS Trailing whitespace preserved 
</span><ins>+PASS Trailing whitespace preserved, detached 
</ins><span class="cx"> PASS Whitespace not compressed 
</span><ins>+PASS Whitespace not compressed, detached 
</ins><span class="cx"> PASS Existing text deleted 
</span><ins>+PASS Existing text deleted, detached 
</ins><span class="cx"> PASS Existing &lt;br&gt; deleted 
</span><ins>+PASS Existing &lt;br&gt; deleted, detached 
</ins><span class="cx"> PASS Assigning the empty string 
</span><ins>+PASS Assigning the empty string, detached 
</ins><span class="cx"> PASS Assigning null 
</span><ins>+PASS Assigning null, detached 
</ins><span class="cx"> PASS Assigning undefined 
</span><ins>+PASS Assigning undefined, detached 
</ins><span class="cx"> PASS Start with CR 
</span><ins>+PASS Start with CR, detached 
</ins><span class="cx"> PASS Start with LF 
</span><ins>+PASS Start with LF, detached 
</ins><span class="cx"> PASS Start with CRLF 
</span><ins>+PASS Start with CRLF, detached 
</ins><span class="cx"> PASS End with CR 
</span><ins>+PASS End with CR, detached 
</ins><span class="cx"> PASS End with LF 
</span><ins>+PASS End with LF, detached 
</ins><span class="cx"> PASS End with CRLF 
</span><ins>+PASS End with CRLF, detached 
</ins><span class="cx"> PASS innerText on &lt;area&gt; element 
</span><ins>+PASS innerText on &lt;area&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;base&gt; element 
</span><ins>+PASS innerText on &lt;base&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;basefont&gt; element 
</span><ins>+PASS innerText on &lt;basefont&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;bgsound&gt; element 
</span><ins>+PASS innerText on &lt;bgsound&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;br&gt; element 
</span><ins>+PASS innerText on &lt;br&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;col&gt; element 
</span><ins>+PASS innerText on &lt;col&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;embed&gt; element 
</span><ins>+PASS innerText on &lt;embed&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;frame&gt; element 
</span><ins>+PASS innerText on &lt;frame&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;hr&gt; element 
</span><ins>+PASS innerText on &lt;hr&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;image&gt; element 
</span><ins>+PASS innerText on &lt;image&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;img&gt; element 
</span><ins>+PASS innerText on &lt;img&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;input&gt; element 
</span><ins>+PASS innerText on &lt;input&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;keygen&gt; element 
</span><ins>+PASS innerText on &lt;keygen&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;link&gt; element 
</span><ins>+PASS innerText on &lt;link&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;menuitem&gt; element 
</span><ins>+PASS innerText on &lt;menuitem&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;meta&gt; element 
</span><ins>+PASS innerText on &lt;meta&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;param&gt; element 
</span><ins>+PASS innerText on &lt;param&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;source&gt; element 
</span><ins>+PASS innerText on &lt;source&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;track&gt; element 
</span><ins>+PASS innerText on &lt;track&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;wbr&gt; element 
</span><ins>+PASS innerText on &lt;wbr&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;colgroup&gt; element 
</span><ins>+PASS innerText on &lt;colgroup&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;frameset&gt; element 
</span><ins>+PASS innerText on &lt;frameset&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;head&gt; element 
</span><ins>+PASS innerText on &lt;head&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;html&gt; element 
</span><ins>+PASS innerText on &lt;html&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;table&gt; element 
</span><ins>+PASS innerText on &lt;table&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;tbody&gt; element 
</span><ins>+PASS innerText on &lt;tbody&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;tfoot&gt; element 
</span><ins>+PASS innerText on &lt;tfoot&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;thead&gt; element 
</span><ins>+PASS innerText on &lt;thead&gt; element, detached 
</ins><span class="cx"> PASS innerText on &lt;tr&gt; element 
</span><ins>+PASS innerText on &lt;tr&gt; element, detached 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsinnerTextsettertestsjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-tests.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-tests.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter-tests.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> testText(&quot;&lt;div&gt;&quot;, &quot;abc&quot;, &quot;abc&quot;, &quot;Simplest possible test&quot;);
</span><span class="cx"> testHTML(&quot;&lt;div&gt;&quot;, &quot;abc\ndef&quot;, &quot;abc&lt;br&gt;def&quot;, &quot;Newlines convert to &lt;br&gt; in non-white-space:pre elements&quot;);
</span><span class="cx"> testHTML(&quot;&lt;pre&gt;&quot;, &quot;abc\ndef&quot;, &quot;abc&lt;br&gt;def&quot;, &quot;Newlines convert to &lt;br&gt; in &lt;pre&gt; element&quot;);
</span><ins>+testHTML(&quot;&lt;textarea&gt;&quot;, &quot;abc\ndef&quot;, &quot;abc&lt;br&gt;def&quot;, &quot;Newlines convert to &lt;br&gt; in &lt;textarea&gt; element&quot;);
</ins><span class="cx"> testHTML(&quot;&lt;div style='white-space:pre'&gt;&quot;, &quot;abc\ndef&quot;, &quot;abc&lt;br&gt;def&quot;, &quot;Newlines convert to &lt;br&gt; in white-space:pre element&quot;);
</span><span class="cx"> testHTML(&quot;&lt;div&gt;&quot;, &quot;abc\rdef&quot;, &quot;abc&lt;br&gt;def&quot;, &quot;CRs convert to &lt;br&gt; in non-white-space:pre elements&quot;);
</span><span class="cx"> testHTML(&quot;&lt;pre&gt;&quot;, &quot;abc\rdef&quot;, &quot;abc&lt;br&gt;def&quot;, &quot;CRs convert to &lt;br&gt; in &lt;pre&gt; element&quot;);
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsinnerTextsetterhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/innerText/setter.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -4,6 +4,10 @@
</span><span class="cx"> &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
</span><span class="cx"> &lt;div id=&quot;container&quot;&gt;&lt;/div&gt;
</span><span class="cx"> &lt;script&gt;
</span><ins>+// As of March 2017, WebKit and Blink have inconsistent results depending on
+// rendered or not.  setupTest() tests a rendered case, and setupTestDetached()
+// tests a not-rendered case.
+
</ins><span class="cx"> function setupTest(context, plain) {
</span><span class="cx">   // context is either a string or an element node
</span><span class="cx">   if (typeof context === &quot;string&quot;) {
</span><span class="lines">@@ -16,34 +20,68 @@
</span><span class="cx">   while (e &amp;&amp; e.nodeType != Node.ELEMENT_NODE) {
</span><span class="cx">     e = e.nextSibling;
</span><span class="cx">   }
</span><ins>+  e.offsetWidth;
</ins><span class="cx">   var oldChild = e.firstChild;
</span><span class="cx">   e.innerText = plain;
</span><span class="cx">   return [e, oldChild];
</span><span class="cx"> }
</span><ins>+
+function setupTestDetached(context, plain) {
+  var detachedContainer = document.createElement(&quot;div&quot;);
+  // context is either a string or an element node
+  if (typeof context === &quot;string&quot;) {
+    detachedContainer.innerHTML = context;
+  } else {
+    detachedContainer.innerHTML = &quot;&quot;;
+    detachedContainer.appendChild(context);
+  }
+  var e = detachedContainer.firstChild;
+  while (e &amp;&amp; e.nodeType != Node.ELEMENT_NODE) {
+    e = e.nextSibling;
+  }
+  var oldChild = e.firstChild;
+  e.innerText = plain;
+  return [e, oldChild];
+}
+
+function assertNewSingleTextNode(newChild, expectedText, oldChild) {
+  assert_not_equals(newChild, null, &quot;Should have a child&quot;);
+  assert_equals(newChild.nodeType, Node.TEXT_NODE, &quot;Child should be a text node&quot;);
+  assert_equals(newChild.nextSibling, null, &quot;Should have only one child&quot;);
+  assert_equals(newChild.data, expectedText);
+  assert_not_equals(newChild, oldChild, &quot;Child should be a *new* text node&quot;);
+}
+
+function assertNoEmptyTextChild(parent) {
+  for (var child = parent.firstChild; child; child = child.nextSibling) {
+    if (child.nodeType === Node.TEXT_NODE) {
+      assert_not_equals(child.data, &quot;&quot;, &quot;Should not have empty text nodes&quot;);
+    }
+  }
+}
+
</ins><span class="cx"> function testText(context, plain, expectedText, msg) {
</span><span class="cx">   test(function(){
</span><span class="cx">     var arr = setupTest(context, plain);
</span><del>-    var e = arr[0];
-    var oldChild = arr[1];
-    assert_not_equals(e.firstChild, null, &quot;Should have a child&quot;);
-    assert_equals(e.firstChild.nodeType, Node.TEXT_NODE, &quot;Child should be a text node&quot;);
-    assert_equals(e.firstChild.nextSibling, null, &quot;Should have only one child&quot;);
-    assert_equals(e.firstChild.data, expectedText);
-    assert_not_equals(e.firstChild, oldChild, &quot;Child should be a *new* text node&quot;);
</del><ins>+    assertNewSingleTextNode(arr[0].firstChild, expectedText, arr[1]);
</ins><span class="cx">   }, msg);
</span><ins>+  test(function() {
+    var arr = setupTestDetached(context, plain);
+    assertNewSingleTextNode(arr[0].firstChild, expectedText, arr[1]);
+  }, msg + &quot;, detached&quot;);
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> function testHTML(context, plain, expectedHTML, msg) {
</span><span class="cx">   test(function(){
</span><span class="cx">     var e = setupTest(context, plain)[0];
</span><span class="cx">     assert_equals(e.innerHTML, expectedHTML);
</span><del>-    var child = e.firstChild;
-    while (child) {
-      if (child.nodeType === Node.TEXT_NODE) {
-        assert_not_equals(child.data, &quot;&quot;, &quot;Should not have empty text nodes&quot;);
-      }
-      child = child.nextSibling;
-    }
</del><ins>+    assertNoEmptyTextChild(e);
</ins><span class="cx">   }, msg);
</span><ins>+  test(function() {
+    var e = setupTestDetached(context, plain)[0];
+    assert_equals(e.innerHTML, expectedHTML);
+    assertNoEmptyTextChild(e);
+  }, msg + &quot;, detached&quot;);
</ins><span class="cx"> }
</span><span class="cx"> &lt;/script&gt;
</span><span class="cx"> &lt;script src=&quot;setter-tests.js&quot;&gt;&lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestslintwhitelist"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/lint.whitelist        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -49,24 +49,30 @@
</span><span class="cx"> 
</span><span class="cx"> ## File types that should never be checked ##
</span><span class="cx"> 
</span><del>-*:*.pdf
-*:*.jpg
-*:*.png
-*:*.gif
-*:*.pdf
-*:*.wav
-*:*.mp3
-*:*.m4a
-*:*.oga
-*:*.ogv
-*:*.webm
-*:*.mp4
-*:*.m4v
-*:*.ttf
-*:*.woff
-*:*.eot
-*:*.sfd
-*:*.swf
</del><ins>+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.pdf
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.jpg
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.png
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.gif
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.wav
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.mp3
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.m4a
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.mov
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.oga
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.ogv
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.webm
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.mp4
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.m4v
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.otf
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.ttf
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.TTF
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.woff
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.woff2
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.eot
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.sfd
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.swf
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.ani
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.cur
+TRAILING WHITESPACE, INDENT TABS, CR AT EOL: *.ico
</ins><span class="cx"> 
</span><span class="cx"> ## Documentation ##
</span><span class="cx"> 
</span><span class="lines">@@ -151,6 +157,8 @@
</span><span class="cx"> SET TIMEOUT: eventsource/eventsource-request-cancellation.htm
</span><span class="cx"> SET TIMEOUT: html/*
</span><span class="cx"> SET TIMEOUT: IndexedDB/*
</span><ins>+SET TIMEOUT: longtask-timing/longtask-in-parentiframe.html
+SET TIMEOUT: infrastructure/*
</ins><span class="cx"> SET TIMEOUT: media-source/mediasource-util.js
</span><span class="cx"> SET TIMEOUT: media-source/URL-createObjectURL-revoke.html
</span><span class="cx"> SET TIMEOUT: mixed-content/generic/sanity-checker.js
</span><span class="lines">@@ -205,6 +213,9 @@
</span><span class="cx"> SET TIMEOUT: XMLHttpRequest/resources/init.htm
</span><span class="cx"> SET TIMEOUT: XMLHttpRequest/resources/xmlhttprequest-timeout.js
</span><span class="cx"> 
</span><ins>+# Intentional use of setTimeout
+SET TIMEOUT: html/webappapis/timers/*
+
</ins><span class="cx"> # CI scripts
</span><span class="cx"> PRINT STATEMENT:check_stability.py
</span><span class="cx"> W3C-TEST.ORG:check_stability.py
</span><span class="lines">@@ -215,3 +226,543 @@
</span><span class="cx"> # Git submodules are not currently scanned
</span><span class="cx"> *:tools/*
</span><span class="cx"> *:resources/*
</span><ins>+*:css/tools/apiclient/*
+*:css/tools/w3ctestlib/*
+
+# Build system virtualenv
+*:css/tools/_virtualenv/*
+
+
+## Third party data files
+TRAILING WHITESPACE: css/css-writing-modes-3/tools/generators/ucd/Blocks.txt
+
+
+## Test generation files
+CONSOLE: css/css-writing-modes-3/tools/generators/unicode-data.js
+
+
+## Give up on work-in-progress for now
+TRAILING WHITESPACE: css/work-in-progress/*
+INDENT TABS: css/work-in-progress/*
+CR AT EOL: css/work-in-progress/*
+
+
+## Test plans and implementation reports
+*: css/*/reports/*
+*: css/*/test-plan/*
+
+
+## Things we don't have enabled yet
+OPEN-NO-MODE: css/*
+PARSE-FAILED: css/*
+PRINT STATEMENT: css/*
+W3C-TEST.ORG: css/*
+CONTENT-VISUAL: css/*
+CONTENT-MANUAL: css/*
+
+
+## Support files not in /support/ or similar
+SUPPORT-WRONG-DIR: css/requirements.txt
+SUPPORT-WRONG-DIR: css/README.md
+SUPPORT-WRONG-DIR: css/build-css-testsuites.sh
+SUPPORT-WRONG-DIR: css/OWNERS
+SUPPORT-WRONG-DIR: css/*/reftest.list
+SUPPORT-WRONG-DIR: css/*.headers
+SUPPORT-WRONG-DIR: css/*/README
+SUPPORT-WRONG-DIR: css/*/README.md
+SUPPORT-WRONG-DIR: css/*-README
+SUPPORT-WRONG-DIR: css/*/LICENSE
+SUPPORT-WRONG-DIR: css/*/LICENSE-*
+SUPPORT-WRONG-DIR: css/*/COPYING
+SUPPORT-WRONG-DIR: css/*/Makefile
+SUPPORT-WRONG-DIR: css/*/OWNERS
+SUPPORT-WRONG-DIR: css/fonts/*
+
+# The selectors-3 testsuite has a weird build system
+SUPPORT-WRONG-DIR: css/css3-selectors/*
+
+# Things we should fix
+SUPPORT-WRONG-DIR: css/css-animations-1/animationevent-interface.js
+SUPPORT-WRONG-DIR: css/css-backgrounds-3/justfortest.html
+SUPPORT-WRONG-DIR: css/css-backgrounds-3/background-attachment-local/aqua-yellow-32x32.png
+SUPPORT-WRONG-DIR: css/css-backgrounds-3/background-clip/list.txt
+SUPPORT-WRONG-DIR: css/css-backgrounds-3/background-origin/list.txt
+SUPPORT-WRONG-DIR: css/css3-color/htaccess
+SUPPORT-WRONG-DIR: css/css-fonts-3/font-variant-debug.html
+SUPPORT-WRONG-DIR: css/css-masking-1/clip-path/svg-clipPath.svg
+SUPPORT-WRONG-DIR: css/css-multicol-1/multicol-red.png
+SUPPORT-WRONG-DIR: css/CSS2/section-index.xht
+SUPPORT-WRONG-DIR: css/CSS2/other-formats/xml/background-18.css
+SUPPORT-WRONG-DIR: css/CSS2/other-formats/xml/background-19-alt.xml
+SUPPORT-WRONG-DIR: css/CSS2/other-formats/xml/background-19.css
+SUPPORT-WRONG-DIR: css/filter-effects-1/filter-external-002-filter.svg
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/check-for-references.sh
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests-filter
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/sync-tests.sh
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/aqua-yellow-32x32.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/aqua-yellow-37x37.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/border.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-bl.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-bo.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-br.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-ct.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-le.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-ri.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-tl.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-to.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule-tr.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/background/reticule.png
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/masking/blank.html
+SUPPORT-WRONG-DIR: css/vendor-imports/mozilla/mozilla-central-reftests/transforms/green.html
+SUPPORT-WRONG-DIR: css/WOFF2/manifest.txt
+SUPPORT-WRONG-DIR: css/WOFF2/testcaseindex.xht
+NON-EXISTENT-REF: css/css-masking-1/clip-path-svg-content/clip-path-clip-rule-008.svg
+NON-EXISTENT-REF: css/css-masking-1/clip-path-svg-content/clip-path-precision-001.svg
+NON-EXISTENT-REF: css/css-shapes-1/spec-examples/shape-outside-012.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-001.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-002.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-003.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-004.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-005.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-006.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-007.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-008.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-009.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-010.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-011.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-ic-001.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-ic-002.html
+NON-EXISTENT-REF: css/css-text-3/line-breaking/line-breaking-ic-003.html
+NON-EXISTENT-REF: css/CSS2/tables/border-collapse-005.html
+NON-EXISTENT-REF: css/mediaqueries-3/relative-units-002.html
+NON-EXISTENT-REF: css/mediaqueries-3/relative-units-003.html
+NON-EXISTENT-REF: css/mediaqueries-3/relative-units-004.html
+SAME-FILE-REF: css/css-multicol-1/multicol-rule-shorthand-2.xht
+
+
+## Whitespace rules that we can't enforce yet
+INDENT TABS: css/.gitmodules
+INDENT TABS: css/compositing-1/*
+INDENT TABS: css/CSS2/*
+INDENT TABS: css/css-align-3/*
+INDENT TABS: css/css-backgrounds-3/*
+INDENT TABS: css/css3-color/*
+INDENT TABS: css/css-color-4/*
+INDENT TABS: css/css-conditional-3/*
+INDENT TABS: css/css-counter-styles-3/*
+INDENT TABS: css/css-flexbox-1/*
+INDENT TABS: css/css-fonts-3/*
+INDENT TABS: css/css-grid-1/*
+INDENT TABS: css/css-images-3/*
+INDENT TABS: css/css-lists-3/*
+INDENT TABS: css/css-masking-1/*
+INDENT TABS: css/css-multicol-1/*
+INDENT TABS: css/cssom-1/*
+INDENT TABS: css/cssom-view-1/*
+INDENT TABS: css/css-page-3/*
+INDENT TABS: css/css-pseudo-4/*
+INDENT TABS: css/css-regions-1/*
+INDENT TABS: css/css-round-display-1/*
+INDENT TABS: css/css-shapes-1/*
+INDENT TABS: css/css-speech-1/*
+INDENT TABS: css/css-tables-3/*
+INDENT TABS: css/css-text-3/*
+INDENT TABS: css/css-text-decor-3/*
+INDENT TABS: css/css-transforms-1/*
+INDENT TABS: css/css-transitions-1/*
+INDENT TABS: css/css-ui-3/*
+INDENT TABS: css/css-values-3/*
+INDENT TABS: css/css-variables-1/*
+INDENT TABS: css/css-writing-modes-3/*
+INDENT TABS: css/filter-effects-1/*
+INDENT TABS: css/fonts/*
+INDENT TABS: css/mediaqueries-3/*
+INDENT TABS: css/css3-selectors/*
+INDENT TABS: css/selectors4/*
+INDENT TABS: css/vendor-imports/*
+INDENT TABS: css/WOFF2/*
+
+
+## Things we're stopping from getting worse
+CONSOLE: css/css-flexbox-1/support/check-layout-th.js
+CONSOLE: css/css-regions-1/elements/support/Three.js
+CONSOLE: css/css-regions-1/interactivity/selection/support/js/selection-test-helper.js
+CONSOLE: css/css-regions-1/stacking-context/javascript-stacking-context-002.html
+CONSOLE: css/css-shapes-1/shape-outside/supported-shapes/support/test-utils.js
+CONSOLE: css/css-transitions-1/transition-delay-002.html
+CONSOLE: css/css-transitions-1/transition-delay-003.html
+CONSOLE: css/css-values-3/viewport-units-css2-001.html
+CONSOLE: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001*.html
+CONSOLE: css/css-writing-modes-3/tools/generators/gulpfile.js
+CONSOLE: css/css-writing-modes-3/tools/generators/text-orientation-generator.js
+CONSOLE: css/cssom-1/index-002.html
+CONSOLE: css/work-in-progress/mozilla/mochitest-simplified/packed.js
+CONSOLE: css/work-in-progress/ttwf_sf/divya/index-002.html
+CONSOLE: css/work-in-progress/ttwf_tokyo/hiromitsuuuuu/test_font_face_parser.html
+
+TRAILING WHITESPACE: css/CSS2/generated-content/before-after-positioned-002.html
+TRAILING WHITESPACE: css/CSS2/generated-content/before-after-positioned-003.html
+TRAILING WHITESPACE: css/CSS2/generated-content/before-after-positioned-004.html
+TRAILING WHITESPACE: css/css-color-4/lab-004.html
+TRAILING WHITESPACE: css/css-color-4/lab-005.html
+TRAILING WHITESPACE: css/css-color-4/lab-006.html
+TRAILING WHITESPACE: css/css-color-4/lab-007.html
+TRAILING WHITESPACE: css/css-color-4/lch-004.html
+TRAILING WHITESPACE: css/css-color-4/lch-005.html
+TRAILING WHITESPACE: css/css-color-4/lch-006.html
+TRAILING WHITESPACE: css/css-color-4/lch-007.html
+TRAILING WHITESPACE: css/css-fonts-3/support/fonts/gsubtest-lookup3.ufo/features.fea
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-assigned-node-with-before-after.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-assigned-node-with-rules.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-host-rule.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-host-with-before-after.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-invisible-slot.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-root-hides-children.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-slot-display-override.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-slot.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-slot-style.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-slotted-nested.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-slotted-rule.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-with-outside-rules.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-with-rules.html
+TRAILING WHITESPACE: css/css-scoping-1/css-scoping-shadow-with-rules-no-style-leak.html
+TRAILING WHITESPACE: css/css-transforms-1/css3-transform-rotateY.html
+TRAILING WHITESPACE: css/css-variables-1/reference/vars-font-shorthand-001-ref.html
+TRAILING WHITESPACE: css/css-variables-1/vars-font-shorthand-001.html
+TRAILING WHITESPACE: css/geometry-1/DOMMatrix-001.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-7-ref.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-8.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-8-ref.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/css21/pagination/moz-css21-float-page-break-inside-avoid-9-ref.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-mbp-horiz-001-rtl-reverse.xhtml
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/moz-multicol3-column-balancing-break-inside-avoid-1.html
+TRAILING WHITESPACE: css/vendor-imports/mozilla/mozilla-central-reftests/multicol3/moz-multicol3-column-balancing-break-inside-avoid-1-ref.html
+
+SET TIMEOUT: css/compositing-1/mix-blend-mode/mix-blend-mode-parent-with-3D-transform-and-transition.html
+SET TIMEOUT: css/compositing-1/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform-and-transition.html
+SET TIMEOUT: css/css-animations-1/animation-display.html
+SET TIMEOUT: css/css-animations-1/animation-duration-001.html
+SET TIMEOUT: css/css-animations-1/animation-duration-003.html
+SET TIMEOUT: css/css-animations-1/animation-duration-004.html
+SET TIMEOUT: css/css-animations-1/animation-iteration-count-006.html
+SET TIMEOUT: css/css-animations-1/animation-name-001.html
+SET TIMEOUT: css/css-animations-1/animation-name-003.html
+SET TIMEOUT: css/css-animations-1/animation-name-004.html
+SET TIMEOUT: css/css-animations-1/animation-play-state-001.html
+SET TIMEOUT: css/css-shapes-1/spec-examples/support/spec-example-utils.js
+SET TIMEOUT: css/css-transitions-1/changing-while-transition.html
+SET TIMEOUT: css/css-transitions-1/events-007.html
+SET TIMEOUT: css/css-transitions-1/support/generalParallelTest.js
+SET TIMEOUT: css/css-transitions-1/support/runParallelAsyncHarness.js
+SET TIMEOUT: css/css-transitions-1/transitions-animatable-properties-01.html
+SET TIMEOUT: css/css-transitions-2/transitioncancel-001.html
+SET TIMEOUT: css/css-values-3/reference/vh_not_refreshing_on_chrome-ref.html
+SET TIMEOUT: css/css-values-3/reference/vh_not_refreshing_on_chrome_iframe-ref.html
+SET TIMEOUT: css/css-values-3/vh_not_refreshing_on_chrome.html
+SET TIMEOUT: css/css-values-3/vh_not_refreshing_on_chrome_iframe.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001a.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001b.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001c.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001d.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001e.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001f.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001g.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001h.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001i.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001j.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001k.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001l.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001m.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001n.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001o.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001p.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001q.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001r.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001s.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001t.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001u.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001v.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001w.html
+SET TIMEOUT: css/css-writing-modes-3/orthogonal-parent-shrink-to-fit-001x.html
+SET TIMEOUT: css/css-writing-modes-3/support/text-orientation.js
+SET TIMEOUT: css/CSS2/backgrounds/background-root-101.xht
+SET TIMEOUT: css/CSS2/backgrounds/background-root-102.xht
+SET TIMEOUT: css/CSS2/backgrounds/background-root-103.xht
+SET TIMEOUT: css/CSS2/floats-clear/floats-137.xht
+SET TIMEOUT: css/CSS2/generated-content/counter-increment-000.xht
+SET TIMEOUT: css/CSS2/generated-content/counter-increment-001.xht
+SET TIMEOUT: css/CSS2/generated-content/counter-increment-002.xht
+SET TIMEOUT: css/CSS2/generated-content/counter-reset-000.xht
+SET TIMEOUT: css/CSS2/generated-content/counter-reset-001.xht
+SET TIMEOUT: css/CSS2/generated-content/counter-reset-002.xht
+SET TIMEOUT: css/CSS2/selectors/dom-hover-001.xht
+SET TIMEOUT: css/CSS2/selectors/dom-hover-002.xht
+SET TIMEOUT: css/CSS2/tables/tables-102.xht
+SET TIMEOUT: css/cssom-view-1/matchMediaAddListener.html
+SET TIMEOUT: css/mediaqueries-3/min-width-tables-001.html
+SET TIMEOUT: css/selectors4/focus-within-shadow-001.html
+SET TIMEOUT: css/selectors4/focus-within-shadow-002.html
+SET TIMEOUT: css/selectors4/focus-within-shadow-003.html
+SET TIMEOUT: css/selectors4/focus-within-shadow-004.html
+SET TIMEOUT: css/selectors4/focus-within-shadow-005.html
+SET TIMEOUT: css/work-in-progress/apple/css-transforms/scripts/prefixfree.min.js
+SET TIMEOUT: css/work-in-progress/aryehgregor/transitions/test_transitions.html
+SET TIMEOUT: css/work-in-progress/aryehgregor/transitions/test_transitions_per_property.html
+SET TIMEOUT: css/work-in-progress/gabriele/css-xml-dom/js/prototype.js
+SET TIMEOUT: css/work-in-progress/hixie/no-pass-condition/box-float-clear-004-demo.html
+SET TIMEOUT: css/work-in-progress/hp/th/collapsible2.js
+SET TIMEOUT: css/work-in-progress/microsoft/CSS3/animations/*
+SET TIMEOUT: css/work-in-progress/microsoft/CSS3/selectors/dynamicEmpty.htm
+SET TIMEOUT: css/work-in-progress/microsoft/CSS3/transitions/*
+SET TIMEOUT: css/work-in-progress/mozilla/mochitest-simplified/SimpleTest.js
+SET TIMEOUT: css/work-in-progress/mozilla/mochitest-simplified/packed.js
+SET TIMEOUT: css/work-in-progress/opera/animations/*
+SET TIMEOUT: css/work-in-progress/ttwf_sf/houzhenyu/flex-item-change-width.html
+
+## Build system stuff
+CSS-COLLIDING-TEST-NAME: css/*/OWNERS
+CSS-COLLIDING-TEST-NAME: css/*/README
+CSS-COLLIDING-TEST-NAME: css/*/README.md
+CSS-COLLIDING-TEST-NAME: css/*/LICENSE
+CSS-COLLIDING-TEST-NAME: css/*/Makefile
+CSS-COLLIDING-TEST-NAME: css/*/reftest.list
+CSS-COLLIDING-TEST-NAME: css/*/.htaccess
+CSS-COLLIDING-SUPPORT-NAME: css/*/README
+CSS-COLLIDING-SUPPORT-NAME: css/*/.htaccess
+CSS-COLLIDING-SUPPORT-NAME: css/*/LOCK
+
+# These are all the current &quot;merge mismatch&quot; errors the build system produces
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/100x100-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-grid-1/grid-items/support/100x100-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/200x200-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-grid-1/grid-items/support/200x200-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/contentEditable/support/common.css
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/interactivity/full-screen/support/common.css
+CSS-COLLIDING-SUPPORT-NAME: css/css-writing-modes-3/support/pattern-gg-gr-100x100.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/pattern-gg-gr-100x100.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/visuren/support/pattern-gg-gr-100x100.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-multicol-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transitions-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/backgrounds/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-fonts-3/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-multicol-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-page-3/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transitions-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/backgrounds/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/solidblue.png
+CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/support/solidblue.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-writing-modes-3/support/swatch-fuchsia.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/swatch-fuchsia.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/interactivity/full-screen/support/util.js
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/interactivity/resizing/support/util.js
+
+# More duplicated copies of the above
+CSS-COLLIDING-SUPPORT-NAME: css/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/archive/raw-tests/css1tests/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/floats-clear/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/media/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-view-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/syntax/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/fonts/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/cascade/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transforms-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-style-attr/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/borders/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/zindex/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/text/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-values-3/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/margin-padding-clear/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-text-3/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/box-display/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/colors/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/lists/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/filter-effects-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/selectors/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/values/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-shapes-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/tables/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/bidi-text/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/css1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/ui/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-images-3/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/generated-content/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/pattern-rgr-grg-rgr.png
+CSS-COLLIDING-SUPPORT-NAME: css/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-fonts-3/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transforms-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-view-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/fonts/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/selectors/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-shapes-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/ui/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/margin-padding-clear/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/archive/raw-tests/css1tests/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/syntax/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/zindex/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/colors/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/cascade/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/bidi-text/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-style-attr/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/lists/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/filter-effects-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/borders/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-text-3/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/text/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/box-display/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/media/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-values-3/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-page-3/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/css1/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/floats-clear/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/generated-content/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-images-3/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/tables/support/pattern-grg-rgr-grg.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/values/support/pattern-grg-rgr-grg.png
+
+# These are thrown off by their support/support/ copies
+# https:css///github.com/w3c/csswg-test/issues/1235
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/bidi-text/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/tables/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/lists/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/filter-effects-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-view-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-values-3/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-style-attr/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/text/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-multicol-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/values/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/archive/raw-tests/css1tests/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/box-display/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/generated-content/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/support/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-fonts-3/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/pagination/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/fonts/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/selectors/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/ui/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/zindex/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/csswg-issues/submitted/css2.1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/backgrounds/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/i18n/syndata/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-text-3/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transforms-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/syntax/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-images-3/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transitions-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/cascade/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/floats-clear/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/css1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-shapes-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/colors/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/positioning/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/borders/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-1/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-page-3/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/generate/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/swatch-red.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-flexbox-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/generated-content/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/backgrounds/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/text/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-values-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/csswg-issues/submitted/css2.1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/borders/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/filter-effects-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/archive/raw-tests/css1tests/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/support/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-writing-modes-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/positioning/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-fonts-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-images-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/box-display/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/colors/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/generate/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transforms-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-text-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-page-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/bidi-text/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-style-attr/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/zindex/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-transitions-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/fonts/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/i18n/syndata/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/selectors/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/syntax/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/css1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-shapes-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/lists/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/ui/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/margin-padding-clear/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/tables/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/cascade/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-multicol-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/values/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-regions-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/floats-clear/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/cssom-view-1/support/swatch-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/pagination/support/swatch-green.png
+
+# Duplicate filename not picked up by the build system
+# https:css///github.com/w3c/csswg-test/issues/1236
+CSS-COLLIDING-REF-NAME: css/css-masking-1/clip-path-svg-content/reference/clip-path-square-001-ref.svg
+CSS-COLLIDING-REF-NAME: css/css-masking-1/clip-path/reference/clip-path-square-001-ref.html
+CSS-COLLIDING-REF-NAME: css/css-masking-1/clip-path-svg-content/reference/clip-path-square-002-ref.svg
+CSS-COLLIDING-REF-NAME: css/css-masking-1/clip-path/reference/clip-path-square-002-ref.html
+
+# Duplicate filename where there's no actual merging
+# (i.e., we're being more aggressive than the build system at forbidding it)
+CSS-COLLIDING-REF-NAME: css/CSS2/positioning/position-relative-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/css-regions-1/positioned-content/reference/position-relative-001-ref.html
+CSS-COLLIDING-REF-NAME: css/CSS2/text/text-transform-lowercase-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/css-text-3/text-transform/reference/text-transform-lowercase-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/CSS2/text/text-transform-capitalize-003-ref.xht
+CSS-COLLIDING-REF-NAME: css/css-text-3/text-transform/reference/text-transform-capitalize-003-ref.html
+CSS-COLLIDING-REF-NAME: css/CSS2/text/text-transform-capitalize-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/css-text-3/text-transform/reference/text-transform-capitalize-001-ref.html
+CSS-COLLIDING-REF-NAME: css/css-pseudo-4/first-letter-001-ref.html
+CSS-COLLIDING-REF-NAME: css/CSS2/selectors/first-letter-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/CSS2/text/text-transform-uppercase-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/css-text-3/text-transform/reference/text-transform-uppercase-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/CSS2/visufx/overflow-applies-to-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/CSS2/ui/overflow-applies-to-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/CSS2/visuren/inline-formatting-context-001-ref.xht
+CSS-COLLIDING-REF-NAME: css/CSS2/linebox/inline-formatting-context-001-ref.xht
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/support/red.png
+CSS-COLLIDING-SUPPORT-NAME: css/compositing-1/mix-blend-mode/support/red.png
+CSS-COLLIDING-SUPPORT-NAME: css/compositing-1/background-blending/support/red.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/replaced-min-max-3.png
+CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/ui3/support/replaced-min-max-3.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/background-size/support/50x50-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-backgrounds-3/support/50x50-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-grid-1/grid-items/support/50x50-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/support/50x50-green.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/ui/support/animated.gif
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/backgrounds/support/animated.gif
+CSS-COLLIDING-SUPPORT-NAME: css/css-shapes-1/shape-outside/shape-image/support/animated.gif
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/archive/raw-tests/css1tests/support/pattern-gg-gr.png
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/css1/support/pattern-gg-gr.png
+CSS-COLLIDING-SUPPORT-NAME: css/css-display-3/support/util.js
+CSS-COLLIDING-SUPPORT-NAME: css/CSS2/normal-flow/support/replaced-min-max-1.png
+CSS-COLLIDING-SUPPORT-NAME: css/vendor-imports/mozilla/mozilla-central-reftests/ui3/support/replaced-min-max-1.png
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsmediacapturefromelementidlharnessexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsmediacapturefromelementidlharnesshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/idlharness.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta charset=utf-8&gt;
+  &lt;title&gt;Media Capture from DOM Elements IDL test&lt;/title&gt;
+  &lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/mediacapture-fromelement/&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;/resources/WebIDLParser.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/idlharness.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;media id='media' width=10 height=10/&gt;
+  &lt;canvas id='canvas' width=10 height=10/&gt;
+
+  &lt;pre id=&quot;untested_idl&quot; style=&quot;display: none&quot;&gt;
+    interface HTMLCanvasElement {};
+    interface HTMLMediaElement {};
+    interface MediaStream {};
+    interface MediaStreamTrack {};
+  &lt;/pre&gt;
+  &lt;pre id=&quot;idl&quot; style=&quot;display: none&quot;&gt;
+    // https://w3c.github.io/mediacapture-fromelement/
+
+    partial interface HTMLMediaElement {
+        MediaStream captureStream();
+    };
+
+    partial interface HTMLCanvasElement {
+        MediaStream captureStream(optional double frameRequestRate);
+    };
+
+    interface CanvasCaptureMediaStreamTrack : MediaStreamTrack {
+        readonly attribute HTMLCanvasElement canvas;
+        void requestFrame();
+    };
+
+  &lt;/pre&gt;
+  &lt;script&gt;
+    var canvas = document.getElementById('canvas');
+    var media = document.getElementById('media');
+
+    var idl_array = new IdlArray();
+    idl_array.add_untested_idls(document.getElementById(&quot;untested_idl&quot;).textContent);
+    idl_array.add_idls(document.getElementById(&quot;idl&quot;).textContent);
+    idl_array.add_objects({
+        HTMLMediaElement: [media],
+        HTMLCanvasElement: [canvas],
+        CanvasCaptureMediaStreamTrack: [canvas.captureStream().getTracks()[0]],
+      });
+    idl_array.test();
+  &lt;/script&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsmediacapturefromelementw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/mediacapture-fromelement/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</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/mediacapture-fromelement/idlharness.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingSyntheticResponsepy"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/SyntheticResponse.py (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/SyntheticResponse.py        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/SyntheticResponse.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -20,7 +20,7 @@
</span><span class="cx">                 response.write_status_headers()
</span><span class="cx">                 headersSent = 1
</span><span class="cx"> 
</span><del>-            response.writer.write(text)
</del><ins>+            response.writer.write_content(text)
</ins><span class="cx"> #        else:
</span><span class="cx"> #            error &quot;  INVALID ARGUMENT %s&quot; % arg
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingresourcetimingjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource-timing.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> 
</span><span class="cx">         // Create responseStart/responseEnd tests from the following array of templates.  In this test, the server delays before
</span><span class="cx">         // responding with responsePart1, then delays again before completing with responsePart2.  The test looks for the expected
</span><del>-        // pauses before responeStart and responseEnd.
</del><ins>+        // pauses before responseStart and responseEnd.
</ins><span class="cx">         [
</span><span class="cx">             { initiator: &quot;iframe&quot;,         responsePart1: serverStepDelay + &quot;ms;&quot;, responsePart2: (serverStepDelay * 2) + &quot;ms;(done)&quot;,                                                      mime: mimeHtml },
</span><span class="cx">             { initiator: &quot;xmlhttprequest&quot;, responsePart1: serverStepDelay + &quot;ms;&quot;, responsePart2: (serverStepDelay * 2) + &quot;ms;(done)&quot;,                                                      mime: mimeText },
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx">         ]
</span><span class="cx">         .forEach(function (template) {
</span><span class="cx">             testCases.push({
</span><del>-                description: &quot;'&quot; + template.initiator + &quot;: 1 second delay before 'responseStart', another 1 second delay before 'responseEnd'.&quot;,
</del><ins>+                description: &quot;'&quot; + template.initiator + &quot;: &quot; + serverStepDelay + &quot;ms delay before 'responseStart', another &quot; + serverStepDelay + &quot;ms delay before 'responseEnd'.&quot;,
</ins><span class="cx">                 test: function (test) {
</span><span class="cx">                     initiateFetch(
</span><span class="cx">                         test,
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx">         ]
</span><span class="cx">         .forEach(function (template) {
</span><span class="cx">             testCases.push({
</span><del>-                description: &quot;'&quot; + template.initiator + &quot; (Redirected): 1 second delay before 'redirectEnd', another 1 second delay before 'responseStart'.&quot;,
</del><ins>+                description: &quot;'&quot; + template.initiator + &quot; (Redirected): &quot; + serverStepDelay + &quot;ms delay before 'redirectEnd', another &quot; + serverStepDelay + &quot;ms delay before 'responseStart'.&quot;,
</ins><span class="cx">                 test: function (test) {
</span><span class="cx">                     initiateFetch(
</span><span class="cx">                         test,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcetimingresource_connection_reusehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/resource_connection_reuse.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -36,12 +36,13 @@
</span><span class="cx">     // when a persistent connection is used, follow-on resources should be included as PerformanceResourceTiming objects
</span><span class="cx">     test_equals(entries.length, 2, 'There should be 2 PerformanceEntries');
</span><span class="cx"> 
</span><del>-    // when a persistent connection is used, for the resource that reuses the socket, connectStart and connectEnd should have the same value as fetchStart
-    var entry = entries[1];
-    test_equals(entry.fetchStart, entry.connectStart, &quot;connectStart and fetchStart should be the same&quot;);
</del><ins>+    if (entries.length &gt;= 2) {
+        // when a persistent connection is used, for the resource that reuses the socket, connectStart and connectEnd should have the same value as fetchStart
+        var entry = entries[1];
+        test_equals(entry.fetchStart, entry.connectStart, &quot;connectStart and fetchStart should be the same&quot;);
+        test_equals(entry.fetchStart, entry.connectEnd, &quot;connectEnd and fetchStart should be the same&quot;);
+    }
</ins><span class="cx"> 
</span><del>-    test_equals(entry.fetchStart, entry.connectEnd, &quot;connectEnd and fetchStart should be the same&quot;);
-
</del><span class="cx">     done();
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceshtaccess"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/.htaccess (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/.htaccess                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/.htaccess        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+# make tests that use utf-16 not inherit the encoding for testharness.js et. al.
+AddCharset utf-8 .css .js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsapimd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,704 @@
</span><ins>+## Introduction ##
+
+testharness.js provides a framework for writing testcases. It is intended to
+provide a convenient API for making common assertions, and to work both
+for testing synchronous and asynchronous DOM features in a way that
+promotes clear, robust, tests.
+
+## Basic Usage ##
+
+The test harness script can be used from HTML or SVG documents and web worker
+scripts.
+
+From an HTML or SVG document, start by importing both `testharness.js` and
+`testharnessreport.js` scripts into the document:
+
+```html
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+```
+
+Refer to the [Web Workers](#web-workers) section for details and an example on
+testing within a web worker.
+
+Within each file one may define one or more tests. Each test is atomic in the
+sense that a single test has a single result (`PASS`/`FAIL`/`TIMEOUT`/`NOTRUN`).
+Within each test one may have a number of asserts. The test fails at the first
+failing assert, and the remainder of the test is (typically) not run.
+
+If the file containing the tests is a HTML file, a table containing the test
+results will be added to the document after all tests have run. By default this
+will be added to a `div` element with `id=log` if it exists, or a new `div`
+element appended to `document.body` if it does not.
+
+NOTE: By default tests must be created before the load event fires. For ways
+to create tests after the load event, see &quot;Determining when all tests
+are complete&quot;, below.
+
+## Synchronous Tests ##
+
+To create a synchronous test use the `test()` function:
+
+```js
+test(test_function, name, properties)
+```
+
+`test_function` is a function that contains the code to test. For example a
+trivial test for the DOM
+[`hasFeature()`](https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature)
+method (which is defined to always return true) would be:
+
+```js
+test(function() {
+  assert_true(document.implementation.hasFeature());
+}, &quot;hasFeature() with no arguments&quot;)
+```
+
+The function passed in is run in the `test()` call.
+
+`properties` is a javascript object for passing extra options to the
+test. Currently it is only used to provide test-specific
+metadata, as described in the [metadata](#metadata) section below.
+
+## Asynchronous Tests ##
+
+Testing asynchronous features is somewhat more complex since the result of
+a test may depend on one or more events or other callbacks. The API provided
+for testing these features is intended to be rather low-level but hopefully
+applicable to many situations.
+
+To create a test, one starts by getting a `Test` object using `async_test`:
+
+```js
+async_test(name, properties)
+```
+
+e.g.
+
+```js
+var t = async_test(&quot;DOMContentLoaded&quot;)
+```
+
+Assertions can be added to the test by calling the step method of the test
+object with a function containing the test assertions:
+
+```js
+document.addEventListener(&quot;DOMContentLoaded&quot;, function() {
+  t.step(function() {
+    assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+  });
+});
+```
+
+When all the steps are complete, the `done()` method must be called:
+
+```js
+t.done();
+```
+
+As a convenience, `async_test` can also takes a function as first argument.
+This function is called with the test object as both its `this` object and
+first argument. The above example can be rewritten as:
+
+```js
+async_test(function(t) {
+  document.addEventListener(&quot;DOMContentLoaded&quot;, function() {
+    t.step(function() {
+      assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+    });
+    t.done();
+  });
+}, &quot;DOMContentLoaded&quot;);
+```
+
+which avoids cluttering the global scope with references to async
+tests instances.
+
+The properties argument is identical to that for `test()`.
+
+In many cases it is convenient to run a step in response to an event or a
+callback. A convenient method of doing this is through the `step_func` method
+which returns a function that, when called runs a test step. For example
+
+```js
+document.addEventListener(&quot;DOMContentLoaded&quot;, t.step_func(function() {
+  assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+  t.done();
+});
+```
+
+As a further convenience, the `step_func` that calls `done()` can instead
+use `step_func_done`, as follows:
+
+```js
+document.addEventListener(&quot;DOMContentLoaded&quot;, t.step_func_done(function() {
+  assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+});
+```
+
+For asynchronous callbacks that should never execute, `unreached_func` can
+be used. For example:
+
+```js
+document.documentElement.addEventListener(&quot;DOMContentLoaded&quot;,
+  t.unreached_func(&quot;DOMContentLoaded should not be fired on the document element&quot;));
+```
+
+Keep in mind that other tests could start executing before an Asynchronous
+Test is finished.
+
+## Promise Tests ##
+
+`promise_test` can be used to test APIs that are based on Promises:
+
+```js
+promise_test(test_function, name, properties)
+```
+
+`test_function` is a function that receives a test as an argument and returns a
+promise. The test completes when the returned promise resolves. The test fails
+if the returned promise rejects.
+
+E.g.:
+
+```js
+function foo() {
+  return Promise.resolve(&quot;foo&quot;);
+}
+
+promise_test(function() {
+  return foo()
+    .then(function(result) {
+      assert_equals(result, &quot;foo&quot;, &quot;foo should return 'foo'&quot;);
+    });
+}, &quot;Simple example&quot;);
+```
+
+In the example above, `foo()` returns a Promise that resolves with the string
+&quot;foo&quot;. The `test_function` passed into `promise_test` invokes `foo` and attaches
+a resolve reaction that verifies the returned value.
+
+Note that in the promise chain constructed in `test_function` assertions don't
+need to wrapped in `step` or `step_func` calls.
+
+Unlike Asynchronous Tests, Promise Tests don't start running until after the
+previous Promise Test finishes.
+
+`promise_rejects` can be used to test Promises that need to reject:
+
+```js
+promise_rejects(test_object, code, promise, description)
+```
+
+The `code` argument is equivalent to the same argument to the `assert_throws`
+function.
+
+Here's an example where the `bar()` function returns a Promise that rejects
+with a TypeError:
+
+```js
+function bar() {
+  return Promise.reject(new TypeError());
+}
+
+promise_test(function(t) {
+  return promise_rejects(t, new TypeError(), bar());
+}, &quot;Another example&quot;);
+```
+
+`EventWatcher` is a constructor function that allows DOM events to be handled
+using Promises, which can make it a lot easier to test a very specific series
+of events, including ensuring that unexpected events are not fired at any point.
+
+Here's an example of how to use `EventWatcher`:
+
+```js
+var t = async_test(&quot;Event order on animation start&quot;);
+
+var animation = watchedNode.getAnimations()[0];
+var eventWatcher = new EventWatcher(t, watchedNode, ['animationstart',
+                                                     'animationiteration',
+                                                     'animationend']);
+
+eventWatcher.wait_for('animationstart').then(t.step_func(function() {
+  assertExpectedStateAtStartOfAnimation();
+  animation.currentTime = END_TIME; // skip to end
+  // We expect two animationiteration events then an animationend event on
+  // skipping to the end of the animation.
+  return eventWatcher.wait_for(['animationiteration',
+                                'animationiteration',
+                                'animationend']);
+})).then(t.step_func(function() {
+  assertExpectedStateAtEndOfAnimation();
+  t.done();
+}));
+```
+
+`wait_for` either takes the name of a single event and returns a Promise that
+will resolve after that event is fired at the watched node, or else it takes an
+array of the names of a series of events and returns a Promise that will
+resolve after that specific series of events has been fired at the watched node.
+
+`EventWatcher` will assert if an event occurs while there is no `wait_for`()
+created Promise waiting to be fulfilled, or if the event is of a different type
+to the type currently expected. This ensures that only the events that are
+expected occur, in the correct order, and with the correct timing.
+
+## Single Page Tests ##
+
+Sometimes, particularly when dealing with asynchronous behaviour,
+having exactly one test per page is desirable, and the overhead of
+wrapping everything in functions for isolation becomes
+burdensome. For these cases `testharness.js` support &quot;single page
+tests&quot;.
+
+In order for a test to be interpreted as a single page test, then
+it must simply not call `test()` or `async_test()` anywhere on the page, and
+must call the `done()` function to indicate that the test is complete. All
+the `assert_*` functions are avaliable as normal, but are called without
+the normal step function wrapper. For example:
+
+```html
+&lt;!doctype html&gt;
+&lt;title&gt;Basic document.body test&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;script&gt;
+    assert_equals(document.body, document.getElementsByTagName(&quot;body&quot;)[0])
+    done()
+ &lt;/script&gt;
+```
+
+The test title for single page tests is always taken from `document.title`.
+
+## Making assertions ##
+
+Functions for making assertions start `assert_`. The full list of
+asserts avaliable is documented in the [asserts](#list-of-assertions) section
+below. The general signature is
+
+```js
+assert_something(actual, expected, description)
+```
+
+although not all assertions precisely match this pattern e.g. `assert_true`
+only takes `actual` and `description` as arguments.
+
+The description parameter is used to present more useful error messages when
+a test fails
+
+NOTE: All asserts must be located in a `test()` or a step of an
+`async_test()`, unless the test is a single page test. Asserts outside
+these places won't be detected correctly by the harness and may cause
+unexpected exceptions that will lead to an error in the harness.
+
+## Cleanup ##
+
+Occasionally tests may create state that will persist beyond the test itself.
+In order to ensure that tests are independent, such state should be cleaned
+up once the test has a result. This can be achieved by adding cleanup
+callbacks to the test. Such callbacks are registered using the `add_cleanup`
+function on the test object. All registered callbacks will be run as soon as
+the test result is known. For example
+
+```js
+  test(function() {
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, &quot;null&quot;);
+    document.body.appendChild(element);
+    this.add_cleanup(function() { document.body.removeChild(element) });
+    assert_equals(document.getElementById(null), element);
+  }, &quot;Calling document.getElementById with a null argument.&quot;);
+```
+
+## Timeouts in Tests ##
+
+In general the use of timeouts in tests is discouraged because this is
+an observed source of instability in real tests when run on CI
+infrastructure. In particular if a test should fail when something
+doesn't happen, it is good practice to simply let the test run to the
+full timeout rather than trying to guess an appropriate shorter
+timeout to use.
+
+In other cases it may be necessary to use a timeout (e.g., for a test
+that only passes if some event is *not* fired). In this case it is
+*not* permitted to use the standard `setTimeout` function. Instead one
+must use the `step_timeout` function:
+
+```js
+async_test(function(t) {
+  var gotEvent = false;
+  document.addEventListener(&quot;DOMContentLoaded&quot;, t.step_func(function() {
+    assert_false(gotEvent, &quot;Unexpected DOMContentLoaded event&quot;);
+    gotEvent = true;
+    t.step_timeout(function() { t.done(); }, 2000);
+  });
+}, &quot;Only one DOMContentLoaded&quot;);
+```
+
+The difference between `setTimeout` and `step_timeout` is that the
+latter takes account of the timeout multiplier when computing the
+delay; e.g., in the above case a timeout multiplier of 2 would cause a
+pause of 4000ms before calling the callback. This makes it less likely
+to produce unstable results in slow configurations.
+
+Note that timeouts generally need to be a few seconds long in order to
+produce stable results in all test environments.
+
+For single-page tests, `step_timeout` is also available as a global
+function.
+
+## Harness Timeout ##
+
+The overall harness admits two timeout values `&quot;normal&quot;` (the
+default) and `&quot;long&quot;`, used for tests which have an unusually long
+runtime. After the timeout is reached, the harness will stop
+waiting for further async tests to complete. By default the
+timeouts are set to 10s and 60s, respectively, but may be changed
+when the test is run on hardware with different performance
+characteristics to a common desktop computer.  In order to opt-in
+to the longer test timeout, the test must specify a meta element:
+
+```html
+&lt;meta name=&quot;timeout&quot; content=&quot;long&quot;&gt;
+```
+
+Occasionally tests may have a race between the harness timing out and
+a particular test failing; typically when the test waits for some event
+that never occurs. In this case it is possible to use `test.force_timeout()`
+in place of `assert_unreached()`, to immediately fail the test but with a
+status of `TIMEOUT`. This should only be used as a last resort when it is
+not possible to make the test reliable in some other way.
+
+## Setup ##
+
+Sometimes tests require non-trivial setup that may fail. For this purpose
+there is a `setup()` function, that may be called with one or two arguments.
+The two argument version is:
+
+```js
+setup(func, properties)
+```
+
+The one argument versions may omit either argument.
+func is a function to be run synchronously. `setup()` becomes a no-op once
+any tests have returned results. Properties are global properties of the test
+harness. Currently recognised properties are:
+
+`explicit_done` - Wait for an explicit call to done() before declaring all
+tests complete (see below; implicitly true for single page tests)
+
+`output_document` - The document to which results should be logged. By default
+this is the current document but could be an ancestor document in some cases
+e.g. a SVG test loaded in an HTML wrapper
+
+`explicit_timeout` - disable file timeout; only stop waiting for results
+when the `timeout()` function is called (typically for use when integrating
+with some existing test framework that has its own timeout mechanism).
+
+`allow_uncaught_exception` - don't treat an uncaught exception as an error;
+needed when e.g. testing the `window.onerror` handler.
+
+`timeout_multiplier` - Multiplier to apply to per-test timeouts.
+
+## Determining when all tests are complete ##
+
+By default the test harness will assume there are no more results to come
+when:
+
+ 1. There are no `Test` objects that have been created but not completed
+ 2. The load event on the document has fired
+
+This behaviour can be overridden by setting the `explicit_done` property to
+true in a call to `setup()`. If `explicit_done` is true, the test harness will
+not assume it is done until the global `done()` function is called. Once `done()`
+is called, the two conditions above apply like normal.
+
+Dedicated and shared workers don't have an event that corresponds to the `load`
+event in a document. Therefore these worker tests always behave as if the
+`explicit_done` property is set to true. Service workers depend on the
+[install](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-global-scope-install-event)
+event which is fired following the completion of [running the
+worker](https://html.spec.whatwg.org/multipage/workers.html#run-a-worker).
+
+## Generating tests ##
+
+There are scenarios in which is is desirable to create a large number of
+(synchronous) tests that are internally similar but vary in the parameters
+used. To make this easier, the `generate_tests` function allows a single
+function to be called with each set of parameters in a list:
+
+```js
+generate_tests(test_function, parameter_lists, properties)
+```
+
+For example:
+
+```js
+generate_tests(assert_equals, [
+    [&quot;Sum one and one&quot;, 1+1, 2],
+    [&quot;Sum one and zero&quot;, 1+0, 1]
+    ])
+```
+
+Is equivalent to:
+
+```js
+test(function() {assert_equals(1+1, 2)}, &quot;Sum one and one&quot;)
+test(function() {assert_equals(1+0, 1)}, &quot;Sum one and zero&quot;)
+```
+
+Note that the first item in each parameter list corresponds to the name of
+the test.
+
+The properties argument is identical to that for `test()`. This may be a
+single object (used for all generated tests) or an array.
+
+## Callback API ##
+
+The framework provides callbacks corresponding to 4 events:
+
+ * `start` - triggered when the first Test is created
+ * `test_state` - triggered when a test state changes
+ * `result` - triggered when a test result is received
+ * `complete` - triggered when all results are received
+
+The page defining the tests may add callbacks for these events by calling
+the following methods:
+
+  `add_start_callback(callback)` - callback called with no arguments
+
+  `add_test_state_callback(callback)` - callback called with a test argument
+
+  `add_result_callback(callback)` - callback called with a test argument
+
+  `add_completion_callback(callback)` - callback called with an array of tests
+                                        and a status object
+
+Tests have the following properties:
+
+  * `status` - A status code. This can be compared to the `PASS`, `FAIL`,
+               `TIMEOUT` and `NOTRUN` properties on the test object
+
+  * `message` - A message indicating the reason for failure. In the future this
+                will always be a string
+
+ The status object gives the overall status of the harness. It has the
+ following properties:
+
+ * `status` - Can be compared to the `OK`, `ERROR` and `TIMEOUT` properties
+
+ * `message` - An error message set when the status is `ERROR`
+
+## External API ##
+
+In order to collect the results of multiple pages containing tests, the test
+harness will, when loaded in a nested browsing context, attempt to call
+certain functions in each ancestor and opener browsing context:
+
+ * start - `start_callback`
+ * test\_state - `test_state_callback`
+ * result - `result_callback`
+ * complete - `completion_callback`
+
+These are given the same arguments as the corresponding internal callbacks
+described above.
+
+## External API through cross-document messaging ##
+
+Where supported, the test harness will also send messages using cross-document
+messaging to each ancestor and opener browsing context. Since it uses the
+wildcard keyword (\*), cross-origin communication is enabled and script on
+different origins can collect the results.
+
+This API follows similar conventions as those described above only slightly
+modified to accommodate message event API. Each message is sent by the harness
+is passed a single vanilla object, available as the `data` property of the event
+object. These objects are structured as follows:
+
+ * start - `{ type: &quot;start&quot; }`
+ * test\_state - `{ type: &quot;test_state&quot;, test: Test }`
+ * result - `{ type: &quot;result&quot;, test: Test }`
+ * complete - `{ type: &quot;complete&quot;, tests: [Test, ...], status: TestsStatus }`
+
+## Web Workers ##
+
+The `testharness.js` script can be used from within [dedicated workers, shared
+workers](https://html.spec.whatwg.org/multipage/workers.html) and [service
+workers](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/).
+
+Testing from a worker script is different from testing from an HTML document in
+several ways:
+
+* Workers have no reporting capability since they are runing in the background.
+  Hence they rely on `testharness.js` running in a companion client HTML document
+  for reporting.
+
+* Shared and service workers do not have a unique client document since there
+  could be more than one document that communicates with these workers. So a
+  client document needs to explicitly connect to a worker and fetch test results
+  from it using `fetch_tests_from_worker`. This is true even for a dedicated
+  worker. Once connected, the individual tests running in the worker (or those
+  that have already run to completion) will be automatically reflected in the
+  client document.
+
+* The client document controls the timeout of the tests. All worker scripts act
+  as if they were started with the `explicit_timeout` option (see the [Harness
+  timeout](#harness-timeout) section).
+
+* Dedicated and shared workers don't have an equivalent of an `onload` event.
+  Thus the test harness has no way to know when all tests have completed (see
+  [Determining when all tests are
+  complete](#determining-when-all-tests-are-complete)). So these worker tests
+  behave as if they were started with the `explicit_done` option. Service
+  workers depend on the
+  [oninstall](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-global-scope-install-event)
+  event and don't require an explicit `done` call.
+
+Here's an example that uses a dedicated worker.
+
+`worker.js`:
+
+```js
+importScripts(&quot;/resources/testharness.js&quot;);
+
+test(function(t) {
+  assert_true(true, &quot;true is true&quot;);
+}, &quot;Simple test&quot;);
+
+// done() is needed because the testharness is running as if explicit_done
+// was specified.
+done();
+```
+
+`test.html`:
+
+```html
+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Simple test&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;
+
+fetch_tests_from_worker(new Worker(&quot;worker.js&quot;));
+
+&lt;/script&gt;
+```
+
+The argument to the `fetch_tests_from_worker` function can be a
+[`Worker`](https://html.spec.whatwg.org/multipage/workers.html#dedicated-workers-and-the-worker-interface),
+a [`SharedWorker`](https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface)
+or a [`ServiceWorker`](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#service-worker-obj).
+Once called, the containing document fetches all the tests from the worker and
+behaves as if those tests were running in the containing document itself.
+
+## List of Assertions ##
+
+### `assert_true(actual, description)`
+asserts that `actual` is strictly true
+
+### `assert_false(actual, description)`
+asserts that `actual` is strictly false
+
+### `assert_equals(actual, expected, description)`
+asserts that `actual` is the same value as `expected`
+
+### `assert_not_equals(actual, expected, description)`
+asserts that `actual` is a different value to `expected`.
+This means that `expected` is a misnomer.
+
+### `assert_in_array(actual, expected, description)`
+asserts that `expected` is an Array, and `actual` is equal to one of the
+members i.e. `expected.indexOf(actual) != -1`
+
+### `assert_array_equals(actual, expected, description)`
+asserts that `actual` and `expected` have the same
+length and the value of each indexed property in `actual` is the strictly equal
+to the corresponding property value in `expected`
+
+### `assert_approx_equals(actual, expected, epsilon, description)`
+asserts that `actual` is a number within ±`epsilon` of `expected`
+
+### `assert_less_than(actual, expected, description)`
+asserts that `actual` is a number less than `expected`
+
+### `assert_greater_than(actual, expected, description)`
+asserts that `actual` is a number greater than `expected`
+
+### `assert_between_exclusive(actual, lower, upper, description`
+asserts that `actual` is a number between `lower` and `upper` but not
+equal to either of them
+
+### `assert_less_than_equal(actual, expected, description)`
+asserts that `actual` is a number less than or equal to `expected`
+
+### `assert_greater_than_equal(actual, expected, description)`
+asserts that `actual` is a number greater than or equal to `expected`
+
+### `assert_between_inclusive(actual, lower, upper, description`
+asserts that `actual` is a number between `lower` and `upper` or
+equal to either of them
+
+### `assert_regexp_match(actual, expected, description)`
+asserts that `actual` matches the regexp `expected`
+
+### `assert_class_string(object, class_name, description)`
+asserts that the class string of `object` as returned in
+`Object.prototype.toString` is equal to `class_name`.
+
+### `assert_own_property(object, property_name, description)`
+assert that object has own property `property_name`
+
+### `assert_inherits(object, property_name, description)`
+assert that object does not have an own property named
+`property_name` but that `property_name` is present in the prototype
+chain for object
+
+### `assert_idl_attribute(object, attribute_name, description)`
+assert that an object that is an instance of some interface has the
+attribute attribute_name following the conditions specified by WebIDL
+
+### `assert_readonly(object, property_name, description)`
+assert that property `property_name` on object is readonly
+
+### `assert_throws(code, func, description)`
+`code` - the expected exception. This can take several forms:
+
+  * string - the thrown exception must be a DOMException with the given
+             name, e.g., &quot;TimeoutError&quot; (for compatibility with existing
+             tests, a constant is also supported, e.g., &quot;TIMEOUT_ERR&quot;)
+  * object - the thrown exception must have a property called &quot;name&quot; that
+             matches code.name
+  * null -   allow any exception (in general, one of the options above
+             should be used)
+
+`func` - a function that should throw
+
+### `assert_unreached(description)`
+asserts if called. Used to ensure that some codepath is *not* taken e.g.
+an event does not fire.
+
+### `assert_any(assert_func, actual, expected_array, extra_arg_1, ... extra_arg_N)`
+asserts that one `assert_func(actual, expected_array_N, extra_arg1, ..., extra_arg_N)`
+  is true for some `expected_array_N` in `expected_array`. This only works for `assert_func`
+  with signature `assert_func(actual, expected, args_1, ..., args_N)`. Note that tests
+  with multiple allowed pass conditions are bad practice unless the spec specifically
+  allows multiple behaviours. Test authors should not use this method simply to hide
+  UA bugs.
+
+### `assert_exists(object, property_name, description)`
+**deprecated**
+asserts that object has an own property `property_name`
+
+### `assert_not_exists(object, property_name, description)`
+**deprecated**
+assert that object does not have own property `property_name`
+
+## Metadata ##
+
+It is possible to add optional metadata to tests; this can be done in
+one of two ways; either by adding `&lt;meta&gt;` elements to the head of the
+document containing the tests, or by adding the metadata to individual
+`[async_]test` calls, as properties.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsapimdorig"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md.orig (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md.orig                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/api.md.orig        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,704 @@
</span><ins>+## Introduction ##
+
+testharness.js provides a framework for writing testcases. It is intended to
+provide a convenient API for making common assertions, and to work both
+for testing synchronous and asynchronous DOM features in a way that
+promotes clear, robust, tests.
+
+## Basic Usage ##
+
+The test harness script can be used from HTML or SVG documents and web worker
+scripts.
+
+From an HTML or SVG document, start by importing both `testharness.js` and
+`testharnessreport.js` scripts into the document:
+
+```html
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+```
+
+Refer to the [Web Workers](#web-workers) section for details and an example on
+testing within a web worker.
+
+Within each file one may define one or more tests. Each test is atomic in the
+sense that a single test has a single result (`PASS`/`FAIL`/`TIMEOUT`/`NOTRUN`).
+Within each test one may have a number of asserts. The test fails at the first
+failing assert, and the remainder of the test is (typically) not run.
+
+If the file containing the tests is a HTML file, a table containing the test
+results will be added to the document after all tests have run. By default this
+will be added to a `div` element with `id=log` if it exists, or a new `div`
+element appended to `document.body` if it does not.
+
+NOTE: By default tests must be created before the load event fires. For ways
+to create tests after the load event, see &quot;Determining when all tests
+are complete&quot;, below.
+
+## Synchronous Tests ##
+
+To create a synchronous test use the `test()` function:
+
+```js
+test(test_function, name, properties)
+```
+
+`test_function` is a function that contains the code to test. For example a
+trivial test for the DOM
+[`hasFeature()`](https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature)
+method (which is defined to always return true) would be:
+
+```js
+test(function() {
+  assert_true(document.implementation.hasFeature());
+}, &quot;hasFeature() with no arguments&quot;)
+```
+
+The function passed in is run in the `test()` call.
+
+`properties` is a javascript object for passing extra options to the
+test. Currently it is only used to provide test-specific
+metadata, as described in the [metadata](#metadata) section below.
+
+## Asynchronous Tests ##
+
+Testing asynchronous features is somewhat more complex since the result of
+a test may depend on one or more events or other callbacks. The API provided
+for testing these features is intended to be rather low-level but hopefully
+applicable to many situations.
+
+To create a test, one starts by getting a `Test` object using `async_test`:
+
+```js
+async_test(name, properties)
+```
+
+e.g.
+
+```js
+var t = async_test(&quot;DOMContentLoaded&quot;)
+```
+
+Assertions can be added to the test by calling the step method of the test
+object with a function containing the test assertions:
+
+```js
+document.addEventListener(&quot;DOMContentLoaded&quot;, function() {
+  t.step(function() {
+    assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+  });
+});
+```
+
+When all the steps are complete, the `done()` method must be called:
+
+```js
+t.done();
+```
+
+As a convenience, `async_test` can also takes a function as first argument.
+This function is called with the test object as both its `this` object and
+first argument. The above example can be rewritten as:
+
+```js
+async_test(function(t) {
+  document.addEventListener(&quot;DOMContentLoaded&quot;, function() {
+    t.step(function() {
+      assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+    });
+    t.done();
+  });
+}, &quot;DOMContentLoaded&quot;);
+```
+
+which avoids cluttering the global scope with references to async
+tests instances.
+
+The properties argument is identical to that for `test()`.
+
+In many cases it is convenient to run a step in response to an event or a
+callback. A convenient method of doing this is through the `step_func` method
+which returns a function that, when called runs a test step. For example
+
+```js
+document.addEventListener(&quot;DOMContentLoaded&quot;, t.step_func(function() {
+  assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+  t.done();
+});
+```
+
+As a further convenience, the `step_func` that calls `done()` can instead
+use `step_func_done`, as follows:
+
+```js
+document.addEventListener(&quot;DOMContentLoaded&quot;, t.step_func_done(function() {
+  assert_true(e.bubbles, &quot;bubbles should be true&quot;);
+});
+```
+
+For asynchronous callbacks that should never execute, `unreached_func` can
+be used. For example:
+
+```js
+document.documentElement.addEventListener(&quot;DOMContentLoaded&quot;,
+  t.unreached_func(&quot;DOMContentLoaded should not be fired on the document element&quot;));
+```
+
+Keep in mind that other tests could start executing before an Asynchronous
+Test is finished.
+
+## Promise Tests ##
+
+`promise_test` can be used to test APIs that are based on Promises:
+
+```js
+promise_test(test_function, name, properties)
+```
+
+`test_function` is a function that receives a test as an argument and returns a
+promise. The test completes when the returned promise resolves. The test fails
+if the returned promise rejects.
+
+E.g.:
+
+```js
+function foo() {
+  return Promise.resolve(&quot;foo&quot;);
+}
+
+promise_test(function() {
+  return foo()
+    .then(function(result) {
+      assert_equals(result, &quot;foo&quot;, &quot;foo should return 'foo'&quot;);
+    });
+}, &quot;Simple example&quot;);
+```
+
+In the example above, `foo()` returns a Promise that resolves with the string
+&quot;foo&quot;. The `test_function` passed into `promise_test` invokes `foo` and attaches
+a resolve reaction that verifies the returned value.
+
+Note that in the promise chain constructed in `test_function` assertions don't
+need to wrapped in `step` or `step_func` calls.
+
+Unlike Asynchronous Tests, Promise Tests don't start running until after the
+previous Promise Test finishes.
+
+`promise_rejects` can be used to test Promises that need to reject:
+
+```js
+promise_rejects(test_object, code, promise, description)
+```
+
+The `code` argument is equivalent to the same argument to the `assert_throws`
+function.
+
+Here's an example where the `bar()` function returns a Promise that rejects
+with a TypeError:
+
+```js
+function bar() {
+  return Promise.reject(new TypeError());
+}
+
+promise_test(function(t) {
+  return promise_rejects(t, new TypeError(), bar());
+}, &quot;Another example&quot;);
+```
+
+`EventWatcher` is a constructor function that allows DOM events to be handled
+using Promises, which can make it a lot easier to test a very specific series
+of events, including ensuring that unexpected events are not fired at any point.
+
+Here's an example of how to use `EventWatcher`:
+
+```js
+var t = async_test(&quot;Event order on animation start&quot;);
+
+var animation = watchedNode.getAnimations()[0];
+var eventWatcher = new EventWatcher(watchedNode, ['animationstart',
+                                                  'animationiteration',
+                                                  'animationend']);
+
+eventWatcher.wait_for(t, 'animationstart').then(t.step_func(function() {
+  assertExpectedStateAtStartOfAnimation();
+  animation.currentTime = END_TIME; // skip to end
+  // We expect two animationiteration events then an animationend event on
+  // skipping to the end of the animation.
+  return eventWatcher.wait_for(['animationiteration',
+                                'animationiteration',
+                                'animationend']);
+})).then(t.step_func(function() {
+  assertExpectedStateAtEndOfAnimation();
+  t.done();
+}));
+```
+
+`wait_for` either takes the name of a single event and returns a Promise that
+will resolve after that event is fired at the watched node, or else it takes an
+array of the names of a series of events and returns a Promise that will
+resolve after that specific series of events has been fired at the watched node.
+
+`EventWatcher` will assert if an event occurs while there is no `wait_for`()
+created Promise waiting to be fulfilled, or if the event is of a different type
+to the type currently expected. This ensures that only the events that are
+expected occur, in the correct order, and with the correct timing.
+
+## Single Page Tests ##
+
+Sometimes, particularly when dealing with asynchronous behaviour,
+having exactly one test per page is desirable, and the overhead of
+wrapping everything in functions for isolation becomes
+burdensome. For these cases `testharness.js` support &quot;single page
+tests&quot;.
+
+In order for a test to be interpreted as a single page test, then
+it must simply not call `test()` or `async_test()` anywhere on the page, and
+must call the `done()` function to indicate that the test is complete. All
+the `assert_*` functions are avaliable as normal, but are called without
+the normal step function wrapper. For example:
+
+```html
+&lt;!doctype html&gt;
+&lt;title&gt;Basic document.body test&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;script&gt;
+    assert_equals(document.body, document.getElementsByTagName(&quot;body&quot;)[0])
+    done()
+ &lt;/script&gt;
+```
+
+The test title for single page tests is always taken from `document.title`.
+
+## Making assertions ##
+
+Functions for making assertions start `assert_`. The full list of
+asserts avaliable is documented in the [asserts](#list-of-assertions) section
+below. The general signature is
+
+```js
+assert_something(actual, expected, description)
+```
+
+although not all assertions precisely match this pattern e.g. `assert_true`
+only takes `actual` and `description` as arguments.
+
+The description parameter is used to present more useful error messages when
+a test fails
+
+NOTE: All asserts must be located in a `test()` or a step of an
+`async_test()`, unless the test is a single page test. Asserts outside
+these places won't be detected correctly by the harness and may cause
+unexpected exceptions that will lead to an error in the harness.
+
+## Cleanup ##
+
+Occasionally tests may create state that will persist beyond the test itself.
+In order to ensure that tests are independent, such state should be cleaned
+up once the test has a result. This can be achieved by adding cleanup
+callbacks to the test. Such callbacks are registered using the `add_cleanup`
+function on the test object. All registered callbacks will be run as soon as
+the test result is known. For example
+
+```js
+  test(function() {
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, &quot;null&quot;);
+    document.body.appendChild(element);
+    this.add_cleanup(function() { document.body.removeChild(element) });
+    assert_equals(document.getElementById(null), element);
+  }, &quot;Calling document.getElementById with a null argument.&quot;);
+```
+
+## Timeouts in Tests ##
+
+In general the use of timeouts in tests is discouraged because this is
+an observed source of instability in real tests when run on CI
+infrastructure. In particular if a test should fail when something
+doesn't happen, it is good practice to simply let the test run to the
+full timeout rather than trying to guess an appropriate shorter
+timeout to use.
+
+In other cases it may be necessary to use a timeout (e.g., for a test
+that only passes if some event is *not* fired). In this case it is
+*not* permitted to use the standard `setTimeout` function. Instead one
+must use the `step_timeout` function:
+
+```js
+async_test(function(t) {
+  var gotEvent = false;
+  document.addEventListener(&quot;DOMContentLoaded&quot;, t.step_func(function() {
+    assert_false(gotEvent, &quot;Unexpected DOMContentLoaded event&quot;);
+    gotEvent = true;
+    t.step_timeout(function() { t.done(); }, 2000);
+  });
+}, &quot;Only one DOMContentLoaded&quot;);
+```
+
+The difference between `setTimeout` and `step_timeout` is that the
+latter takes account of the timeout multiplier when computing the
+delay; e.g., in the above case a timeout multiplier of 2 would cause a
+pause of 4000ms before calling the callback. This makes it less likely
+to produce unstable results in slow configurations.
+
+Note that timeouts generally need to be a few seconds long in order to
+produce stable results in all test environments.
+
+For single-page tests, `step_timeout` is also available as a global
+function.
+
+## Harness Timeout ##
+
+The overall harness admits two timeout values `&quot;normal&quot;` (the
+default) and `&quot;long&quot;`, used for tests which have an unusually long
+runtime. After the timeout is reached, the harness will stop
+waiting for further async tests to complete. By default the
+timeouts are set to 10s and 60s, respectively, but may be changed
+when the test is run on hardware with different performance
+characteristics to a common desktop computer.  In order to opt-in
+to the longer test timeout, the test must specify a meta element:
+
+```html
+&lt;meta name=&quot;timeout&quot; content=&quot;long&quot;&gt;
+```
+
+Occasionally tests may have a race between the harness timing out and
+a particular test failing; typically when the test waits for some event
+that never occurs. In this case it is possible to use `test.force_timeout()`
+in place of `assert_unreached()`, to immediately fail the test but with a
+status of `TIMEOUT`. This should only be used as a last resort when it is
+not possible to make the test reliable in some other way.
+
+## Setup ##
+
+Sometimes tests require non-trivial setup that may fail. For this purpose
+there is a `setup()` function, that may be called with one or two arguments.
+The two argument version is:
+
+```js
+setup(func, properties)
+```
+
+The one argument versions may omit either argument.
+func is a function to be run synchronously. `setup()` becomes a no-op once
+any tests have returned results. Properties are global properties of the test
+harness. Currently recognised properties are:
+
+`explicit_done` - Wait for an explicit call to done() before declaring all
+tests complete (see below; implicitly true for single page tests)
+
+`output_document` - The document to which results should be logged. By default
+this is the current document but could be an ancestor document in some cases
+e.g. a SVG test loaded in an HTML wrapper
+
+`explicit_timeout` - disable file timeout; only stop waiting for results
+when the `timeout()` function is called (typically for use when integrating
+with some existing test framework that has its own timeout mechanism).
+
+`allow_uncaught_exception` - don't treat an uncaught exception as an error;
+needed when e.g. testing the `window.onerror` handler.
+
+`timeout_multiplier` - Multiplier to apply to per-test timeouts.
+
+## Determining when all tests are complete ##
+
+By default the test harness will assume there are no more results to come
+when:
+
+ 1. There are no `Test` objects that have been created but not completed
+ 2. The load event on the document has fired
+
+This behaviour can be overridden by setting the `explicit_done` property to
+true in a call to `setup()`. If `explicit_done` is true, the test harness will
+not assume it is done until the global `done()` function is called. Once `done()`
+is called, the two conditions above apply like normal.
+
+Dedicated and shared workers don't have an event that corresponds to the `load`
+event in a document. Therefore these worker tests always behave as if the
+`explicit_done` property is set to true. Service workers depend on the
+[install](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-global-scope-install-event)
+event which is fired following the completion of [running the
+worker](https://html.spec.whatwg.org/multipage/workers.html#run-a-worker).
+
+## Generating tests ##
+
+There are scenarios in which is is desirable to create a large number of
+(synchronous) tests that are internally similar but vary in the parameters
+used. To make this easier, the `generate_tests` function allows a single
+function to be called with each set of parameters in a list:
+
+```js
+generate_tests(test_function, parameter_lists, properties)
+```
+
+For example:
+
+```js
+generate_tests(assert_equals, [
+    [&quot;Sum one and one&quot;, 1+1, 2],
+    [&quot;Sum one and zero&quot;, 1+0, 1]
+    ])
+```
+
+Is equivalent to:
+
+```js
+test(function() {assert_equals(1+1, 2)}, &quot;Sum one and one&quot;)
+test(function() {assert_equals(1+0, 1)}, &quot;Sum one and zero&quot;)
+```
+
+Note that the first item in each parameter list corresponds to the name of
+the test.
+
+The properties argument is identical to that for `test()`. This may be a
+single object (used for all generated tests) or an array.
+
+## Callback API ##
+
+The framework provides callbacks corresponding to 4 events:
+
+ * `start` - triggered when the first Test is created
+ * `test_state` - triggered when a test state changes
+ * `result` - triggered when a test result is received
+ * `complete` - triggered when all results are received
+
+The page defining the tests may add callbacks for these events by calling
+the following methods:
+
+  `add_start_callback(callback)` - callback called with no arguments
+
+  `add_test_state_callback(callback)` - callback called with a test argument
+
+  `add_result_callback(callback)` - callback called with a test argument
+
+  `add_completion_callback(callback)` - callback called with an array of tests
+                                        and an status object
+
+tests have the following properties:
+
+  * `status` - A status code. This can be compared to the `PASS`, `FAIL`,
+               `TIMEOUT` and `NOTRUN` properties on the test object
+
+  * `message` - A message indicating the reason for failure. In the future this
+                will always be a string
+
+ The status object gives the overall status of the harness. It has the
+ following properties:
+
+ * `status` - Can be compared to the `OK`, `ERROR` and `TIMEOUT` properties
+
+ * `message` - An error message set when the status is `ERROR`
+
+## External API ##
+
+In order to collect the results of multiple pages containing tests, the test
+harness will, when loaded in a nested browsing context, attempt to call
+certain functions in each ancestor and opener browsing context:
+
+ * start - `start_callback`
+ * test\_state - `test_state_callback`
+ * result - `result_callback`
+ * complete - `completion_callback`
+
+These are given the same arguments as the corresponding internal callbacks
+described above.
+
+## External API through cross-document messaging ##
+
+Where supported, the test harness will also send messages using cross-document
+messaging to each ancestor and opener browsing context. Since it uses the
+wildcard keyword (\*), cross-origin communication is enabled and script on
+different origins can collect the results.
+
+This API follows similar conventions as those described above only slightly
+modified to accommodate message event API. Each message is sent by the harness
+is passed a single vanilla object, available as the `data` property of the event
+object. These objects are structures as follows:
+
+ * start - `{ type: &quot;start&quot; }`
+ * test\_state - `{ type: &quot;test_state&quot;, test: Test }`
+ * result - `{ type: &quot;result&quot;, test: Test }`
+ * complete - `{ type: &quot;complete&quot;, tests: [Test, ...], status: TestsStatus }`
+
+## Web Workers ##
+
+The `testharness.js` script can be used from within [dedicated workers, shared
+workers](https://html.spec.whatwg.org/multipage/workers.html) and [service
+workers](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/).
+
+Testing from a worker script is different from testing from an HTML document in
+several ways:
+
+* Workers have no reporting capability since they are runing in the background.
+  Hence they rely on `testharness.js` running in a companion client HTML document
+  for reporting.
+
+* Shared and service workers do not have a unique client document since there
+  could be more than one document that communicates with these workers. So a
+  client document needs to explicitly connect to a worker and fetch test results
+  from it using `fetch_tests_from_worker`. This is true even for a dedicated
+  worker. Once connected, the individual tests running in the worker (or those
+  that have already run to completion) will be automatically reflected in the
+  client document.
+
+* The client document controls the timeout of the tests. All worker scripts act
+  as if they were started with the `explicit_timeout` option (see the [Harness
+  timeout](#harness-timeout) section).
+
+* Dedicated and shared workers don't have an equivalent of an `onload` event.
+  Thus the test harness has no way to know when all tests have completed (see
+  [Determining when all tests are
+  complete](#determining-when-all-tests-are-complete)). So these worker tests
+  behave as if they were started with the `explicit_done` option. Service
+  workers depend on the
+  [oninstall](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#service-worker-global-scope-install-event)
+  event and don't require an explicit `done` call.
+
+Here's an example that uses a dedicated worker.
+
+`worker.js`:
+
+```js
+importScripts(&quot;/resources/testharness.js&quot;);
+
+test(function(t) {
+  assert_true(true, &quot;true is true&quot;);
+}, &quot;Simple test&quot;);
+
+// done() is needed because the testharness is running as if explicit_done
+// was specified.
+done();
+```
+
+`test.html`:
+
+```html
+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Simple test&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;
+
+fetch_tests_from_worker(new Worker(&quot;worker.js&quot;));
+
+&lt;/script&gt;
+```
+
+The argument to the `fetch_tests_from_worker` function can be a
+[`Worker`](https://html.spec.whatwg.org/multipage/workers.html#dedicated-workers-and-the-worker-interface),
+a [`SharedWorker`](https://html.spec.whatwg.org/multipage/workers.html#shared-workers-and-the-sharedworker-interface)
+or a [`ServiceWorker`](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#service-worker-obj).
+Once called, the containing document fetches all the tests from the worker and
+behaves as if those tests were running in the containing document itself.
+
+## List of Assertions ##
+
+### `assert_true(actual, description)`
+asserts that `actual` is strictly true
+
+### `assert_false(actual, description)`
+asserts that `actual` is strictly false
+
+### `assert_equals(actual, expected, description)`
+asserts that `actual` is the same value as `expected`
+
+### `assert_not_equals(actual, expected, description)`
+asserts that `actual` is a different value to `expected`.
+This means that `expected` is a misnomer.
+
+### `assert_in_array(actual, expected, description)`
+asserts that `expected` is an Array, and `actual` is equal to one of the
+members i.e. `expected.indexOf(actual) != -1`
+
+### `assert_array_equals(actual, expected, description)`
+asserts that `actual` and `expected` have the same
+length and the value of each indexed property in `actual` is the strictly equal
+to the corresponding property value in `expected`
+
+### `assert_approx_equals(actual, expected, epsilon, description)`
+asserts that `actual` is a number within ±`epsilon` of `expected`
+
+### `assert_less_than(actual, expected, description)`
+asserts that `actual` is a number less than `expected`
+
+### `assert_greater_than(actual, expected, description)`
+asserts that `actual` is a number greater than `expected`
+
+### `assert_between_exclusive(actual, lower, upper, description`
+asserts that `actual` is a number between `lower` and `upper` but not
+equal to either of them
+
+### `assert_less_than_equal(actual, expected, description)`
+asserts that `actual` is a number less than or equal to `expected`
+
+### `assert_greater_than_equal(actual, expected, description)`
+asserts that `actual` is a number greater than or equal to `expected`
+
+### `assert_between_inclusive(actual, lower, upper, description`
+asserts that `actual` is a number between `lower` and `upper` or
+equal to either of them
+
+### `assert_regexp_match(actual, expected, description)`
+asserts that `actual` matches the regexp `expected`
+
+### `assert_class_string(object, class_name, description)`
+asserts that the class string of `object` as returned in
+`Object.prototype.toString` is equal to `class_name`.
+
+### `assert_own_property(object, property_name, description)`
+assert that object has own property `property_name`
+
+### `assert_inherits(object, property_name, description)`
+assert that object does not have an own property named
+`property_name` but that `property_name` is present in the prototype
+chain for object
+
+### `assert_idl_attribute(object, attribute_name, description)`
+assert that an object that is an instance of some interface has the
+attribute attribute_name following the conditions specified by WebIDL
+
+### `assert_readonly(object, property_name, description)`
+assert that property `property_name` on object is readonly
+
+### `assert_throws(code, func, description)`
+`code` - the expected exception. This can take several forms:
+
+  * string - the thrown exception must be a DOMException with the given
+             name, e.g., &quot;TimeoutError&quot; (for compatibility with existing
+             tests, a constant is also supported, e.g., &quot;TIMEOUT_ERR&quot;)
+  * object - the thrown exception must have a property called &quot;name&quot; that
+             matches code.name
+  * null -   allow any exception (in general, one of the options above
+             should be used)
+
+`func` - a function that should throw
+
+### `assert_unreached(description)`
+asserts if called. Used to ensure that some codepath is *not* taken e.g.
+an event does not fire.
+
+### `assert_any(assert_func, actual, expected_array, extra_arg_1, ... extra_arg_N)`
+asserts that one `assert_func(actual, expected_array_N, extra_arg1, ..., extra_arg_N)`
+  is true for some `expected_array_N` in `expected_array`. This only works for `assert_func`
+  with signature `assert_func(actual, expected, args_1, ..., args_N)`. Note that tests
+  with multiple allowed pass conditions are bad practice unless the spec specifically
+  allows multiple behaviours. Test authors should not use this method simply to hide
+  UA bugs.
+
+### `assert_exists(object, property_name, description)`
+**deprecated**
+asserts that object has an own property `property_name`
+
+### `assert_not_exists(object, property_name, description)`
+**deprecated**
+assert that object does not have own property `property_name`
+
+## Metadata ##
+
+It is possible to add optional metadata to tests; this can be done in
+one of two ways; either by adding `&lt;meta&gt;` elements to the head of the
+document containing the tests, or by adding the metadata to individual
+`[async_]test` calls, as properties.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsidlharnessmd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/idlharness.md (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/idlharness.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/idlharness.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,128 @@
</span><ins>+## Introduction ##
+
+`idlharness.js` automatically generates browser tests for WebIDL interfaces, using
+the testharness.js framework.  To use, first include the following:
+
+```html
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=/resources/WebIDLParser.js&gt;&lt;/script&gt;
+&lt;script src=/resources/idlharness.js&gt;&lt;/script&gt;
+```
+
+Then you'll need some type of IDLs.  Here's some script that can be run on a
+spec written in HTML, which will grab all the elements with `class=&quot;idl&quot;`,
+concatenate them, and replace the body so you can copy-paste:
+
+```js
+var s = &quot;&quot;;
+[].forEach.call(document.getElementsByClassName(&quot;idl&quot;), function(idl) {
+  //https://www.w3.org/Bugs/Public/show_bug.cgi?id=14914
+  if (!idl.classList.contains(&quot;extract&quot;))
+  {
+    s += idl.textContent + &quot;\n\n&quot;;
+  }
+});
+document.body.innerHTML = '&lt;pre&gt;&lt;/pre&gt;';
+document.body.firstChild.textContent = s;
+```
+
+Once you have that, put it in your script somehow.  The easiest way is to
+embed it literally in an HTML file with `&lt;script type=text/plain&gt;` or similar,
+so that you don't have to do any escaping.  Another possibility is to put it
+in a separate .idl file that's fetched via XHR or similar.  Sample usage:
+
+```js
+var idl_array = new IdlArray();
+idl_array.add_untested_idls(&quot;interface Node { readonly attribute DOMString nodeName; };&quot;);
+idl_array.add_idls(&quot;interface Document : Node { readonly attribute DOMString URL; };&quot;);
+idl_array.add_objects({Document: [&quot;document&quot;]});
+idl_array.test();
+```
+
+This tests that `window.Document` exists and meets all the requirements of
+WebIDL.  It also tests that window.document (the result of evaluating the
+string &quot;document&quot;) has URL and nodeName properties that behave as they
+should, and otherwise meets WebIDL's requirements for an object whose
+primary interface is Document.  It does not test that window.Node exists,
+which is what you want if the Node interface is already tested in some other
+specification's suite and your specification only extends or refers to it.
+Of course, each IDL string can define many different things, and calls to
+add_objects() can register many different objects for different interfaces:
+this is a very simple example.
+
+## Public methods of IdlArray ##
+
+IdlArray objects can be obtained with `new IdlArray()`.  Anything not
+documented in this section should be considered an implementation detail,
+and outside callers should not use it.
+
+### `add_idls(idl_string)`
+  Parses `idl_string` (throwing on parse error) and adds the results to the
+  IdlArray.  All the definitions will be tested when you run test().  If
+  some of the definitions refer to other definitions, those must be present
+  too.  For instance, if `idl_string` says that `Document` inherits from `Node`,
+  the `Node` interface must also have been provided in some call to `add_idls()`
+  or `add_untested_idls()`.
+
+### `add_untested_idls(idl_string)`
+  Like `add_idls()`, but the definitions will not be tested.  If an untested
+  interface is added and then extended with a tested partial interface, the
+  members of the partial interface will still be tested.  Also, all the
+  members will still be tested for objects added with `add_objects()`, because
+  you probably want to test that (for instance) window.document has all the
+  properties from `Node`, not just `Document`, even if the `Node` interface itself
+  is tested in a different test suite.
+
+### `add_objects(dict)`
+  `dict` should be an object whose keys are the names of interfaces or
+  exceptions, and whose values are arrays of strings.  When an interface or
+  exception is tested, every string registered for it with `add_objects()`
+  will be evaluated, and tests will be run on the result to verify that it
+  correctly implements that interface or exception.  This is the only way to
+  test anything about `[NoInterfaceObject]` interfaces, and there are many
+  tests that can't be run on any interface without an object to fiddle with.
+
+  The interface has to be the *primary* interface of all the objects
+  provided.  For example, don't pass `{Node: [&quot;document&quot;]}`, but rather
+  `{Document: [&quot;document&quot;]}`.  Assuming the `Document` interface was declared to
+  inherit from `Node`, this will automatically test that document implements
+  the `Node` interface too.
+
+  Warning: methods will be called on any provided objects, in a manner that
+  WebIDL requires be safe.  For instance, if a method has mandatory
+  arguments, the test suite will try calling it with too few arguments to
+  see if it throws an exception.  If an implementation incorrectly runs the
+  function instead of throwing, this might have side effects, possibly even
+  preventing the test suite from running correctly.
+
+### `prevent_multiple_testing(name)`
+  This is a niche method for use in case you're testing many objects that
+  implement the same interfaces, and don't want to retest the same
+  interfaces every single time.  For instance, HTML defines many interfaces
+  that all inherit from `HTMLElement`, so the HTML test suite has something
+  like
+
+```js
+.add_objects({
+  HTMLHtmlElement: ['document.documentElement'],
+  HTMLHeadElement: ['document.head'],
+  HTMLBodyElement: ['document.body'],
+  ...
+})
+```
+
+  and so on for dozens of element types.  This would mean that it would
+  retest that each and every one of those elements implements `HTMLElement`,
+  `Element`, and `Node`, which would be thousands of basically redundant tests.
+  The test suite therefore calls `prevent_multiple_testing(&quot;HTMLElement&quot;)`.
+  This means that once one object has been tested to implement `HTMLElement`
+  and its ancestors, no other object will be.  Thus in the example code
+  above, the harness would test that `document.documentElement` correctly
+  implements `HTMLHtmlElement`, `HTMLElement`, `Element`, and `Node`; but
+  `document.head` would only be tested for `HTMLHeadElement`, and so on for
+  further objects.
+
+### `test()`
+  Run all tests.  This should be called after you've called all other
+  methods to add IDLs and objects.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesdocsw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/docs/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</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/resources/docs/api.md
+/LayoutTests/imported/w3c/web-platform-tests/resources/docs/idlharness.md
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisampleerrorworkerjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-error-worker.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-error-worker.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-error-worker.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+importScripts(&quot;../testharness.js&quot;);
+
+throw new Error(&quot;This failure is expected.&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisampleworkerjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-worker.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-worker.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-worker.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+importScripts(&quot;../testharness.js&quot;);
+
+test(
+    function(test) {
+        assert_true(true, &quot;True is true&quot;);
+    },
+    &quot;Worker test that completes successfully&quot;);
+
+test(
+    function(test) {
+        assert_true(false, &quot;Failing test&quot;);
+    },
+    &quot;Worker test that fails ('FAIL')&quot;);
+
+async_test(
+    function(test) {
+        assert_true(true, &quot;True is true&quot;);
+    },
+    &quot;Worker test that times out ('TIMEOUT')&quot;);
+
+async_test(&quot;Worker test that doesn't run ('NOT RUN')&quot;);
+
+async_test(
+    function(test) {
+        self.setTimeout(
+            function() {
+                test.done();
+            },
+            0);
+    },
+    &quot;Worker async_test that completes successfully&quot;);
+
+// An explicit done() is required for dedicated and shared web workers.
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisamplehtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,175 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Sample HTML5 API Tests&lt;/title&gt;
+&lt;meta name=&quot;timeout&quot; content=&quot;6000&quot;&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;load_test_attr.done()&quot;&gt;
+&lt;h1&gt;Sample HTML5 API Tests&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+    setup_run = false;
+    setup(function() {
+            setup_run = true;
+          });
+    test(function() {assert_true(setup_run)}, &quot;Setup function ran&quot;);
+
+    // Two examples for testing events from handler and attributes
+    var load_test_event = async_test(&quot;window onload event fires when set from the handler&quot;);
+
+    function windowLoad()
+    {
+        load_test_event.done();
+    }
+    on_event(window, &quot;load&quot;, windowLoad);
+
+    // see the body onload below
+    var load_test_attr = async_test(&quot;body element fires the onload event set from the attribute&quot;);
+&lt;/script&gt;
+&lt;script&gt;
+    function bodyElement()
+    {
+        assert_equals(document.body, document.getElementsByTagName(&quot;body&quot;)[0]);
+    }
+    test(bodyElement, &quot;document.body should be the first body element in the document&quot;);
+
+    test(function() {
+        assert_equals(1,1);
+        assert_equals(NaN, NaN, &quot;NaN case&quot;);
+        assert_equals(0, 0, &quot;Zero case&quot;);
+    }, &quot;assert_equals tests&quot;)
+
+    test(function() {
+        assert_equals(-0, 0, &quot;Zero case&quot;);
+    }, &quot;assert_equals tests expected to fail&quot;)
+
+    test(function() {
+        assert_not_equals({}, {}, &quot;object case&quot;);
+        assert_not_equals(-0, 0, &quot;Zero case&quot;);
+    }, &quot;assert_not_equals tests&quot;)
+
+    function testAssertPass()
+    {
+        assert_true(true);
+    }
+    test(testAssertPass, &quot;assert_true expected to pass&quot;);
+
+    function testAssertFalse()
+    {
+        assert_true(false, &quot;false should not be true&quot;);
+    }
+    test(testAssertFalse, &quot;assert_true expected to fail&quot;);
+
+    function basicAssertArrayEquals()
+    {
+        assert_array_equals([1, NaN], [1, NaN], &quot;[1, NaN] is equal to [1, NaN]&quot;);
+    }
+    test(basicAssertArrayEquals, &quot;basic assert_array_equals test&quot;);
+
+    function basicAssertObjectEquals()
+    {
+        assert_object_equals([1, 2, [1, 2]], { 0: 1, 1: 2, 2: { 0: 1, 1: 2} }, &quot;array is equal to object&quot;)
+    }
+    test(basicAssertObjectEquals, &quot;basic assert_object_equals test&quot;);
+
+    function basicAssertApproxEquals()
+    {
+        assert_approx_equals(10, 11, 1, &quot;10 is approximately (+/- 1) 11&quot;)
+    }
+    test(basicAssertApproxEquals, &quot;basic assert_approx_equals test&quot;);
+
+    function basicAssertLessThan()
+    {
+        assert_less_than(10, 11, &quot;10 is less than 11&quot;)
+    }
+    test(basicAssertApproxEquals, &quot;basic assert_less_than test&quot;);
+
+    function basicAssertGreaterThan()
+    {
+        assert_greater_than(10, 11, &quot;10 is not greater than 11&quot;);
+    }
+    test(basicAssertGreaterThan, &quot;assert_greater_than expected to fail&quot;);
+
+    function basicAssertGreaterThanEqual()
+    {
+        assert_greater_than_equal(10, 10, &quot;10 is greater than or equal to 10&quot;)
+    }
+    test(basicAssertGreaterThanEqual, &quot;basic assert_greater_than_equal test&quot;);
+
+    function basicAssertLessThanEqual()
+    {
+        assert_greater_than_equal('10', 10, &quot;'10' is not a number&quot;)
+    }
+    test(basicAssertLessThanEqual, &quot;assert_less_than_equal expected to fail&quot;);
+
+    function testAssertInherits() {
+        var A = function(){this.a = &quot;a&quot;}
+        A.prototype = {b:&quot;b&quot;}
+        var a = new A();
+        assert_exists(a, &quot;a&quot;);
+        assert_not_exists(a, &quot;b&quot;);
+        assert_inherits(a, &quot;b&quot;);
+    }
+    test(testAssertInherits, &quot;test for assert[_not]_exists and insert_inherits&quot;)
+
+    test(function()
+    {
+        var a = document.createElement(&quot;a&quot;)
+        var b = document.createElement(&quot;b&quot;)
+        assert_throws(&quot;NOT_FOUND_ERR&quot;, function(){a.removeChild(b)});
+    }, &quot;Test throw DOM exception&quot;)
+
+    test(function()
+    {
+        var a = document.createTextNode(&quot;a&quot;)
+        var b = document.createElement(&quot;b&quot;)
+        assert_throws(&quot;NOT_FOUND_ERR&quot;, function(){a.appendChild(b)});
+    }, &quot;Test throw DOM exception expected to fail&quot;)
+
+    test(function()
+    {
+        var e = {code:0, name:&quot;TEST_ERR&quot;, TEST_ERR:0}
+        assert_throws(&quot;TEST_ERR&quot;, function() {throw e});
+    }, &quot;Test assert_throws with non-DOM-exception expected to Fail&quot;);
+
+    var t = async_test(&quot;Test step_func&quot;)
+    setTimeout(
+      t.step_func(
+        function () {
+          assert_true(true); t.done();
+        }), 0);
+
+    async_test(function(t) {
+        setTimeout(t.step_func(function (){assert_true(true); t.done();}), 0);
+    }, &quot;Test async test with callback&quot;);
+
+    async_test(function() {
+        setTimeout(this.step_func(function (){assert_true(true); this.done();}), 0);
+    }, &quot;Test async test with callback and `this` obj.&quot;);
+
+    async_test(&quot;test should timeout (fail) with the default of 2 seconds&quot;).step(function(){});
+
+    async_test(&quot;test should timeout (fail) with a custom set timeout value of 1 second&quot;,
+               {timeout:1000}).step(function(){});
+
+    async_test(&quot;async test that is never started, should have status Not Run&quot;, {timeout:1000});
+
+
+    test(function(t) {
+             window.global = 1;
+             t.add_cleanup(function() {delete window.global});
+             assert_equals(window.global, 1);
+         },
+         &quot;Test that defines a global and cleans it up&quot;);
+
+    test(function() {assert_equals(window.global, undefined)},
+         &quot;Test that cleanup handlers from previous test ran&quot;);
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample10html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample10.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample10.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample10.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,119 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Async Tests and Promises&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Async Tests and Promises&lt;/h1&gt;
+&lt;p&gt;This test assumes ECMAScript 6 Promise support. Some failures are expected.&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+test(function() {
+  var p = new Promise(function(resolve, reject) {});
+  assert_true('then' in p);
+  assert_equals(typeof Promise.resolve, 'function');
+  assert_equals(typeof Promise.reject, 'function');
+}, &quot;Promises are supported in your browser&quot;);
+
+(function() {
+  var t = async_test(&quot;Promise resolution&quot;);
+  t.step(function() {
+    Promise.resolve('x').then(
+      t.step_func(function(value) {
+        assert_equals(value, 'x');
+        t.done();
+      }),
+      t.unreached_func('Promise should not reject')
+    );
+  });
+}());
+
+(function() {
+  var t = async_test(&quot;Promise rejection&quot;);
+  t.step(function() {
+    Promise.reject(Error('fail')).then(
+      t.unreached_func('Promise should reject'),
+      t.step_func(function(reason) {
+        assert_true(reason instanceof Error);
+        assert_equals(reason.message, 'fail');
+        t.done();
+      })
+    );
+  });
+}());
+
+(function() {
+  var t = async_test(&quot;Promises resolution chaining&quot;);
+  t.step(function() {
+    var resolutions = [];
+    Promise.resolve('a').then(
+      t.step_func(function(value) {
+        resolutions.push(value);
+        return 'b';
+      })
+    ).then(
+      t.step_func(function(value) {
+        resolutions.push(value);
+        return 'c';
+      })
+    ).then(
+      t.step_func(function(value) {
+        resolutions.push(value);
+
+        assert_array_equals(resolutions, ['a', 'b', 'c']);
+        t.done();
+      })
+    ).catch(
+      t.unreached_func('promise should not have rejected')
+    );
+  });
+}());
+
+(function() {
+  var t = async_test(&quot;Use of step_func with Promises&quot;);
+  t.step(function() {
+    var resolutions = [];
+    Promise.resolve('x').then(
+      t.step_func_done(),
+      t.unreached_func('Promise should not have rejected')
+    );
+  });
+}());
+
+(function() {
+  var t = async_test(&quot;Promises and test assertion failures (should fail)&quot;);
+  t.step(function() {
+    var resolutions = [];
+    Promise.resolve('x').then(
+      t.step_func(function(value) {
+        assert_true(false, 'This failure is expected');
+      })
+    ).then(
+      t.unreached_func('Promise should not have resolved')
+    ).catch(
+      t.unreached_func('Promise should not have rejected')
+    );
+  });
+}());
+
+(function() {
+  var t = async_test(&quot;Use of unreached_func with Promises (should fail)&quot;);
+  t.step(function() {
+    var resolutions = [];
+    var r;
+    var p = new Promise(function(resolve, reject) {
+      // Reject instead of resolve, to demonstrate failure.
+      reject(123);
+    });
+    p.then(
+      function(value) {
+        assert_equals(value, 123, 'This should not actually happen');
+      },
+      t.unreached_func('This failure is expected')
+    );
+  });
+}());
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample11html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample11.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample11.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample11.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Example with iframe that notifies containing document via callbacks&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;start_test_in_iframe()&quot;&gt;
+&lt;h1&gt;Callbacks From Tests Running In An IFRAME&lt;/h1&gt;
+&lt;p&gt;A test is run inside an &lt;tt&gt;iframe&lt;/tt&gt; with a same origin document. The
+containing document should receive callbacks as the tests progress inside the
+&lt;tt&gt;iframe&lt;/tt&gt;. A single passing test is expected in the summary below.
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+var callbacks = [];
+var START = 1
+var TEST_STATE = 2
+var RESULT = 3
+var COMPLETION = 4
+var test_complete = false;
+
+setup({explicit_done: true});
+
+// The following callbacks are called for tests in this document as well as the
+// tests in the IFRAME. Currently, callbacks invoked from this document and any
+// child document are indistinguishable from each other.
+
+function start_callback(properties) {
+    callbacks.push(START);
+}
+
+function test_state_callback(test) {
+    callbacks.push(TEST_STATE);
+}
+
+function result_callback(test) {
+    callbacks.push(RESULT);
+}
+
+function completion_callback(tests, status) {
+    if (test_complete) {
+        return;
+    }
+    test_complete = true;
+    callbacks.push(COMPLETION);
+    verify_received_callbacks();
+    done();
+}
+
+function verify_received_callbacks() {
+    var copy_of_callbacks = callbacks.slice(0);
+
+    // Note that you can't run test assertions directly in a callback even if
+    // this is a file test. When the callback is invoked from a same-origin child
+    // page, the callstack reaches into the calling child document. Any
+    // exception thrown in a callback will be handled by the child rather than
+    // this document.
+    test(
+        function() {
+            // callbacks list should look like:
+            //     START 1*(TEST_STATE) RESULT COMPLETION
+            assert_equals(copy_of_callbacks.shift(), START,
+                          &quot;The first received callback should be 'start_callback'.&quot;);
+            assert_equals(copy_of_callbacks.shift(), TEST_STATE,
+                          &quot;'test_state_callback' should be received before any &quot; +
+                          &quot;result or completion callbacks.&quot;);
+            while(copy_of_callbacks.length &gt; 0) {
+                var callback = copy_of_callbacks.shift();
+                if (callback != TEST_STATE) {
+                    copy_of_callbacks.unshift(callback);
+                    break;
+                }
+            }
+            assert_equals(copy_of_callbacks.shift(), RESULT,
+                          &quot;'test_state_callback' should be followed by 'result_callback'.&quot;);
+            assert_equals(copy_of_callbacks.shift(), COMPLETION,
+                          &quot;Final 'result_callback' should be followed by 'completion_callback'.&quot;);
+            assert_equals(copy_of_callbacks.length, 0,
+                          &quot;'completion_callback' should be the last callback.&quot;);
+        });
+}
+
+function start_test_in_iframe() {
+    // This document is going to clear any received callbacks and maintain
+    // radio silence until the test in the iframe runs to completion. The
+    // completion_callback() will then complete the testing on this document.
+    callbacks.length = 0;
+    var iframe = document.createElement(&quot;iframe&quot;);
+    // apisample6.html has a single test.
+    iframe.src = &quot;apisample6.html&quot;;
+    iframe.style.setProperty(&quot;display&quot;, &quot;none&quot;);
+    document.getElementById(&quot;target&quot;).appendChild(iframe);
+}
+&lt;/script&gt;
+
+&lt;div id=&quot;target&quot;&gt;
+&lt;/div&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample12html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Example with iframe that notifies containing document via cross document messaging&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Notifications From Tests Running In An IFRAME&lt;/h1&gt;
+&lt;p&gt;A test is run inside an &lt;tt&gt;iframe&lt;/tt&gt; with a same origin document. The
+containing document should receive messages via &lt;tt&gt;postMessage&lt;/tt&gt;/
+&lt;tt&gt;onmessage&lt;/tt&gt; as the tests progress inside the &lt;tt&gt;iframe&lt;/tt&gt;. A single
+passing test is expected in the summary below.
+&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+var t = async_test(&quot;Containing document receives messages&quot;);
+var start_received = false;
+var result_received = false;
+var completion_received = false;
+
+// These are the messages that are expected to be seen while running the tests
+// in the IFRAME.
+var expected_messages = [
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;start&quot;);
+            assert_own_property(message.data, &quot;properties&quot;);
+        }),
+
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;test_state&quot;);
+            assert_equals(message.data.test.status, message.data.test.NOTRUN);
+        }),
+
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;result&quot;);
+            assert_equals(message.data.test.status, message.data.test.PASS);
+        }),
+
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;complete&quot;);
+            assert_equals(message.data.tests.length, 1);
+            assert_equals(message.data.tests[0].status,
+                          message.data.tests[0].PASS);
+            assert_equals(message.data.status.status, message.data.status.OK);
+            t.done();
+        }),
+
+    t.unreached_func(&quot;Too many messages received&quot;)
+];
+
+on_event(window,
+         &quot;message&quot;,
+         function(message) {
+             var handler = expected_messages.shift();
+             handler(message);
+         });
+&lt;/script&gt;
+&lt;iframe src=&quot;apisample6.html&quot; style=&quot;display:none&quot;&gt;
+  &lt;!--  apisample6 implements a file_is_test test.  --&gt;
+&lt;/iframe&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample12htmlorig"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html.orig (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html.orig                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html.orig        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Example with iframe that notifies containing document via cross document messaging&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Notifications From Tests Running In An IFRAME&lt;/h1&gt;
+&lt;p&gt;A test is run inside an &lt;tt&gt;iframe&lt;/tt&gt; with a same origin document. The
+containing document should receive messages via &lt;tt&gt;postMessage&lt;/tt&gt;/
+&lt;tt&gt;onmessage&lt;/tt&gt; as the tests progress inside the &lt;tt&gt;iframe&lt;/tt&gt;. A single
+passing test is expected in the summary below.
+&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+var t = async_test(&quot;Containing document receives messages&quot;);
+var start_received = false;
+var result_received = false;
+var completion_received = false;
+
+// These are the messages that are expected to be seen while running the tests
+// in the IFRAME.
+var expected_messages = [
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;start&quot;);
+            assert_own_property(message.data, &quot;properties&quot;);
+        }),
+
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;test_state&quot;);
+            assert_equals(message.data.test.status, message.data.test.NOTRUN);
+        }),
+
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;result&quot;);
+            assert_equals(message.data.test.status, message.data.test.PASS);
+        }),
+
+    t.step_func(
+        function(message) {
+            assert_equals(message.data.type, &quot;complete&quot;);
+            assert_equals(message.data.tests.length, 1);
+            assert_equals(message.data.tests[0].status,
+                          message.data.tests[0].PASS);
+            assert_equals(message.data.status.status, message.data.status.OK);
+            t.done();
+        }),
+
+    t.unreached_func(&quot;Too many messages received&quot;)
+];
+
+on_event(window,
+         &quot;message&quot;,
+         function(message) {
+             var handler = expected_messages.shift();
+             handler(message);
+         });
+&lt;/script&gt;
+&lt;iframe src=&quot;apisample6.html&quot; style=&quot;display:none&quot;&gt;
+  &lt;!-- apisample6 implements a file_is_test test. --&gt;
+&lt;/iframe&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample13html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample13.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample13.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample13.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,132 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Promise Tests&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Promise Tests&lt;/h1&gt;
+&lt;p&gt;This test demonstrates the use of &lt;tt&gt;promise_test&lt;/tt&gt;. Assumes ECMAScript 6
+Promise support. Some failures are expected.&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+test(
+    function() {
+        var p = new Promise(function(resolve, reject){});
+        assert_true(&quot;then&quot; in p);
+        assert_equals(typeof Promise.resolve, &quot;function&quot;);
+        assert_equals(typeof Promise.reject, &quot;function&quot;);
+    },
+    &quot;Promises are supported in your browser&quot;);
+
+promise_test(
+    function() {
+        return Promise.resolve(&quot;x&quot;)
+            .then(
+                function(value) {
+                    assert_equals(value,
+                                  &quot;x&quot;,
+                                  &quot;Fulfilled promise should pass result to &quot; +
+                                  &quot;fulfill reaction.&quot;);
+                });
+    },
+    &quot;Promise fulfillment with result&quot;);
+
+promise_test(
+    function(t) {
+        return Promise.reject(new Error(&quot;fail&quot;))
+            .then(t.unreached_func(&quot;Promise should reject&quot;),
+                function(reason) {
+                    assert_true(
+                        reason instanceof Error,
+                        &quot;Rejected promise should pass reason to fulfill reaction.&quot;);
+                    assert_equals(
+                        reason.message,
+                        &quot;fail&quot;,
+                        &quot;Rejected promise should pass reason to reject reaction.&quot;);
+                });
+    },
+    &quot;Promise rejection with result&quot;);
+
+promise_test(
+    function() {
+        var resolutions = [];
+        return Promise.resolve(&quot;a&quot;)
+            .then(
+                function(value) {
+                    resolutions.push(value);
+                    return &quot;b&quot;;
+                })
+            .then(
+                function(value) {
+                    resolutions.push(value);
+                    return &quot;c&quot;;
+                })
+            .then(
+                function(value) {
+                    resolutions.push(value);
+                    assert_array_equals(resolutions, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]);
+                });
+    },
+    &quot;Chain of promise resolutions&quot;);
+
+promise_test(
+    function(t) {
+        var resolutions = [];
+        return Promise.resolve(&quot;x&quot;)
+            .then(
+                function(value) {
+                    assert_true(false, &quot;Expected failure.&quot;);
+                })
+            .then(t.unreached_func(&quot;UNEXPECTED FAILURE: Promise should not have resolved.&quot;));
+    },
+    &quot;Assertion failure in a fulfill reaction (should FAIL with an expected failure)&quot;);
+
+promise_test(
+    function(t) {
+        return new Promise(
+                function(resolve, reject) {
+                    reject(123);
+                })
+            .then(t.unreached_func(&quot;UNEXPECTED FAILURE: Fulfill reaction reached after rejection.&quot;),
+                  t.unreached_func(&quot;Expected failure.&quot;));
+    },
+    &quot;unreached_func as reactor (should FAIL with an expected failure)&quot;);
+
+promise_test(
+    function() {
+        return true;
+    },
+    &quot;promise_test with function that doesn't return a Promise&quot;);
+
+promise_test(function(){},
+             &quot;promise_test with function that doesn't return anything&quot;);
+
+promise_test(
+    function() {
+        return Promise.reject(&quot;Expected rejection&quot;);
+    },
+    &quot;promise_test with unhandled rejection (should FAIL)&quot;);
+
+promise_test(
+    function() {
+        return Promise.resolve(10)
+            .then(
+                function(value) {
+                    throw Error(&quot;Expected exception.&quot;);
+                });
+    },
+    &quot;promise_test with unhandled exception in fulfill reaction (should FAIL)&quot;);
+
+promise_test(
+    function(t) {
+        return Promise.reject(10)
+            .then(
+                t.unreached_func(&quot;UNEXPECTED FAILURE: Fulfill reaction reached after rejection.&quot;),
+                function(value) {
+                    throw Error(&quot;Expected exception.&quot;);
+                });
+    },
+    &quot;promise_test with unhandled exception in reject reaction (should FAIL)&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample14html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample14.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample14.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample14.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Dedicated Worker Tests&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Dedicated Web Worker Tests&lt;/h1&gt;
+&lt;p&gt;Demonstrates running &lt;tt&gt;testharness&lt;/tt&gt; based tests inside a dedicated web worker.
+&lt;p&gt;The test harness is expected to fail due to an uncaught exception in one worker.&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+test(function(t) {
+        assert_true(&quot;Worker&quot; in self, &quot;Browser should support Workers&quot;);
+    },
+    &quot;Browser supports Workers&quot;);
+
+fetch_tests_from_worker(new Worker(&quot;apisample-worker.js&quot;));
+
+fetch_tests_from_worker(new Worker(&quot;apisample-error-worker.js&quot;));
+
+test(function(t) {
+        assert_false(false, &quot;False is false&quot;);
+    },
+    &quot;Test running on main document.&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample15html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample15.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample15.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample15.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Example with a shared worker&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Shared Web Worker Tests&lt;/h1&gt;
+&lt;p&gt;Demonstrates running &lt;tt&gt;testharness&lt;/tt&gt; based tests inside a shared worker.
+&lt;p&gt;The test harness should time out due to one of the tests in the worker timing out.
+&lt;p&gt;This test assumes that the browser supports &lt;a href=&quot;http://www.w3.org/TR/workers/#shared-workers-and-the-sharedworker-interface&quot;&gt;shared web workers&lt;/a&gt;.
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+test(
+    function(t) {
+        assert_true(&quot;SharedWorker&quot; in self,
+                    &quot;Browser should support SharedWorkers&quot;);
+    },
+    &quot;Browser supports SharedWorkers&quot;);
+
+fetch_tests_from_worker(new SharedWorker(&quot;apisample-worker.js&quot;,
+                                         &quot;My shared worker&quot;));
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample16html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample16.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample16.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample16.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Example with a service worker&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Service Worker Tests&lt;/h1&gt;
+&lt;p&gt;Demonstrates running &lt;tt&gt;testharness&lt;/tt&gt; based tests inside a service worker.
+&lt;p&gt;The test harness should time out due to one of the tests inside the worker timing out.
+&lt;p&gt;This test assumes that the browser supports &lt;a href=&quot;http://www.w3.org/TR/service-workers/&quot;&gt;ServiceWorkers&lt;/a&gt;.
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script&gt;
+test(
+    function(t) {
+        assert_true(&quot;serviceWorker&quot; in navigator,
+                    &quot;navigator.serviceWorker exists&quot;);
+    },
+    &quot;Browser supports ServiceWorker&quot;);
+
+promise_test(
+    function() {
+        // Since the service worker registration could be in an indeterminate
+        // state (due to, for example, a previous test run failing), we start by
+        // unregstering our service worker and then registering it again.
+        var scope = &quot;/service-worker-scope&quot;;
+        var worker_url = &quot;apisample-worker.js&quot;;
+
+        return navigator.serviceWorker.register(worker_url, {scope: scope})
+            .then(
+                function(registration) {
+                    return registration.unregister();
+                })
+            .then(
+                function() {
+                    return navigator.serviceWorker.register(worker_url, {scope: scope});
+                })
+            .then(
+                function(registration) {
+                    add_completion_callback(
+                        function() {
+                            registration.unregister();
+                        });
+
+                    return new Promise(
+                        function(resolve) {
+                            registration.addEventListener(&quot;updatefound&quot;,
+                                function() {
+                                    resolve(registration.installing);
+                                });
+                        });
+                })
+            .then(
+                function(worker) {
+                    fetch_tests_from_worker(worker);
+                });
+    },
+    &quot;Register ServiceWorker&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample17html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample17.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample17.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample17.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Sample for using generate_tests to create a series of tests that share the same callback.&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;script&gt;
+// generate_tests takes an array of arrays that define tests
+// but lets pass it an empty array and verify it does nothing.
+function null_callback() {
+        throw &quot;null_callback should not be called.&quot;;
+}
+generate_tests(null_callback, []);
+
+// Generate 3 tests specifying the name and one parameter
+function validate_arguments(arg1) {
+        assert_equals(arg1, 1, &quot;Ensure that we get our expected argument&quot;);
+}
+generate_tests(validate_arguments, [
+        [&quot;first test&quot;, 1],
+        [&quot;second test&quot;, 1],
+        [&quot;third test&quot;, 1],
+]);
+
+// Generate a test passing in a properties object that is shared across tests.
+function validate_properties() {
+        assert_true(this.properties.sentinel, &quot;Ensure that we got the right properties object.&quot;);
+}
+generate_tests(validate_properties, [[&quot;sentinel check 1&quot;], [&quot;sentinel check 2&quot;]], {sentinel: true});
+
+// Generate a test passing in a properties object that is shared across tests.
+function validate_separate_properties() {
+        if (this.name === &quot;sentinel check 1 unique properties&quot;) {
+                assert_true(this.properties.sentinel, &quot;Ensure that we got the right properties object. Expect sentinel: true.&quot;);
+        }
+        else {
+                assert_false(this.properties.sentinel, &quot;Ensure that we got the right properties object. Expect sentinel: false.&quot;);
+        }
+}
+generate_tests(validate_separate_properties, [[&quot;sentinel check 1 unique properties&quot;], [&quot;sentinel check 2 unique properties&quot;]], [{sentinel: true}, {sentinel: false}]);
+
+// Finally generate a complicated set of tests from another data source
+var letters = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;, &quot;d&quot;, &quot;e&quot;, &quot;f&quot;];
+var numbers = [0, 1, 2, 3, 4, 5];
+function validate_related_arguments(arg1, arg2) {
+        assert_equals(arg1.charCodeAt(0) - &quot;a&quot;.charCodeAt(0), arg2, &quot;Ensure that we can map letters to numbers.&quot;);
+}
+function format_as_test(letter, index, letters) {
+        return [&quot;Test to map &quot; + letter + &quot; to &quot; + numbers[index], letter, numbers[index]];
+}
+generate_tests(validate_related_arguments, letters.map(format_as_test));
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
+
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample2htm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample2.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample2.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample2.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Sample HTML5 API Tests&lt;/title&gt;
+&lt;/head&gt;
+&lt;body onload=&quot;load_test_attr.done()&quot;&gt;
+&lt;h1&gt;Sample HTML5 API Tests&lt;/h1&gt;
+&lt;p&gt;There should be two results&lt;/p&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+setup({explicit_done:true})
+test(function() {assert_true(true)}, &quot;Test defined before onload&quot;);
+
+onload = function() {test(function (){assert_true(true)}, &quot;Test defined after onload&quot;);
+done();
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample3htm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample3.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample3.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample3.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Sample HTML5 API Tests&lt;/title&gt;
+&lt;/head&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+
+&lt;body onload=&quot;load_test_attr.done()&quot;&gt;
+&lt;h1&gt;Sample HTML5 API Tests&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+setup({explicit_timeout:true});
+var t = async_test(&quot;This test should give a status of 'Not Run' without a delay&quot;);
+timeout();
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample4htm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample4.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample4.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample4.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Harness Handling Uncaught Exception&lt;/title&gt;
+&lt;/head&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+
+&lt;body&gt;
+&lt;h1&gt;Harness Handling Uncaught Exception&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var t = async_test(&quot;This should show a harness status of 'Error' and a test status of 'Not Run'&quot;);
+throw new Error(&quot;Example Error&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample5htm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample5.htm (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample5.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample5.htm        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;Harness Ignoring Uncaught Exception&lt;/title&gt;
+&lt;/head&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+
+&lt;body&gt;
+&lt;h1&gt;Harness Ignoring Uncaught Exception&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+setup({allow_uncaught_exception:true});
+var t = async_test(&quot;setup({allow_uncaught_exception:true}) should allow tests to pass even if there is an exception&quot;);
+onerror = t.step_func(function() {t.done()});
+throw new Error(&quot;Example Error&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample6html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample6.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample6.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample6.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;title&gt;Example with file_is_test&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+onload = function() {
+  assert_true(true);
+  done();
+}
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample7html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample7.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample7.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample7.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;title&gt;Example with file_is_test (should fail)&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+onload = function() {
+  assert_true(false);
+  done();
+}
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample8html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample8.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample8.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample8.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;title&gt;Example single page test with no body&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+assert_true(true);
+done();
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesapisample9html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample9.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample9.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample9.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;title&gt;Example single page test with no asserts&lt;/title&gt;
+&lt;script src=&quot;../testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+done();
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesexamplesw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/examples/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,36 @@
</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/resources/examples/apisample-error-worker.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample-worker.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample.htm
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample10.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample11.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample12.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample13.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample14.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample15.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample16.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample17.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample2.htm
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample3.htm
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample4.htm
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample5.htm
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample6.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample7.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample8.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/examples/apisample9.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesidlharnessjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/idlharness.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/idlharness.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/idlharness.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1384,7 +1384,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (isPairIterator) {
</span><span class="cx">         test(function() {
</span><del>-            assert_equals(self[interfaceName].prototype[Symbol.iterator], self[interfaceName].prototype[&quot;entries&quot;], &quot;entries method is not the same as @@iterator&quot;);
</del><ins>+            assert_equals(self[interfaceName].prototype[&quot;entries&quot;], self[interfaceName].prototype[Symbol.iterator], &quot;entries method is not the same as @@iterator&quot;);
</ins><span class="cx">         }, &quot;Testing pair iterable interface &quot; + interfaceName);
</span><span class="cx">     } else {
</span><span class="cx">         test(function() {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourcesw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,24 @@
</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/resources/.htaccess
+/LayoutTests/imported/w3c/web-platform-tests/resources/LICENSE
+/LayoutTests/imported/w3c/web-platform-tests/resources/idlharness.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/readme.md
+/LayoutTests/imported/w3c/web-platform-tests/resources/testharness.css
+/LayoutTests/imported/w3c/web-platform-tests/resources/testharness.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/testharnessreport.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2coveragehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/coverage.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/coverage.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/coverage.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,341 @@
</span><ins>+&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt;&lt;title&gt;Coverage&lt;/title&gt;&lt;script&gt;
+
+headings = [];
+
+onload = function(){
+  headings = document.querySelectorAll('h2');
+};
+
+onscroll = function(e){
+  var heading = find(window.scrollY);
+  if (!heading) return;
+  var links = document.querySelectorAll('#menu a')
+    , link;
+
+  for (var i = 0, len = links.length; i &lt; len; ++i) {
+    link = links[i];
+    link.className = link.getAttribute('href') == '#' + heading.id
+      ? 'active'
+      : '';
+  }
+};
+
+function find(y) {
+  var i = headings.length
+    , heading;
+
+  while (i--) {
+    heading = headings[i];
+    if (y &gt;= heading.offsetTop) {
+      return heading;
+    }
+  }
+}
+&lt;/script&gt;
+&lt;style&gt;
+
+body {
+  font: 14px/1.6 &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;
+  margin: 0;
+  color: #2C2C2C;
+  border-top: 2px solid #ddd;
+}
+
+#coverage {
+  padding: 60px;
+}
+
+h1 a {
+  color: inherit;
+  font-weight: inherit;
+}
+
+h1 a:hover {
+  text-decoration: none;
+}
+
+.onload h1 {
+  opacity: 1;
+}
+
+h2 {
+  width: 80%;
+  margin-top: 80px;
+  margin-bottom: 0;
+  font-weight: 100;
+  letter-spacing: 1px;
+  border-bottom: 1px solid #eee;
+}
+
+a {
+  color: #8A6343;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+a:hover {
+  text-decoration: underline;
+}
+
+ul {
+  margin-top: 20px;
+  padding: 0 15px;
+  width: 100%;
+}
+
+ul li {
+  float: left;
+  width: 40%;
+  margin-top: 5px;
+  margin-right: 60px;
+  list-style: none;
+  border-bottom: 1px solid #eee;
+  padding: 5px 0;
+  font-size: 12px;
+}
+
+ul::after {
+  content: '.';
+  height: 0;
+  display: block;
+  visibility: hidden;
+  clear: both;
+}
+
+code {
+  font: 12px monaco, monospace;
+}
+
+pre {
+  margin: 30px;
+  padding: 30px;
+  border: 1px solid #eee;
+  border-bottom-color: #ddd;
+  -webkit-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -webkit-box-shadow: inset 0 0 10px #eee;
+  -moz-box-shadow: inset 0 0 10px #eee;
+  overflow-x: auto;
+}
+
+img {
+  margin: 30px;
+  padding: 1px;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+  -webkit-box-shadow: 0 3px 10px #dedede, 0 1px 5px #888;
+  -moz-box-shadow: 0 3px 10px #dedede, 0 1px 5px #888;
+  max-width: 100%;
+}
+
+footer {
+  background: #eee;
+  width: 100%;
+  padding: 50px 0;
+  text-align: right;
+  border-top: 1px solid #ddd;
+}
+
+footer span {
+  display: block;
+  margin-right: 30px;
+  color: #888;
+  font-size: 12px;
+}
+
+#menu {
+  position: fixed;
+  font-size: 12px;
+  overflow-y: auto;
+  top: 0;
+  right: 0;
+  margin: 0;
+  height: 100%;
+  padding: 15px 0;
+  text-align: right;
+  border-left: 1px solid #eee;
+  -moz-box-shadow: 0 0 2px #888
+     , inset 5px 0 20px rgba(0,0,0,.5)
+     , inset 5px 0 3px rgba(0,0,0,.3);
+  -webkit-box-shadow: 0 0 2px #888
+     , inset 5px 0 20px rgba(0,0,0,.5)
+     , inset 5px 0 3px rgba(0,0,0,.3);
+  -webkit-font-smoothing: antialiased;
+  background: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAABmCAMAAAAOARRQAAABelBMVEUjJSU6OzshIyM5OjoqKy02NjgsLS01NTYjJCUzNTUgISMlJSc0NTUvMDA6PDwlJyg1NjYoKis2NjYrLS02ODkpKyw0NDYrLC04ODovLzA4Ojo0NDUtLy86OjwjIyU4OTosLS82ODgtLS8hIyQvMTEnKCooKSsrKy0qLCwkJSUnKCkrLCwpKiwwMjIxMzMqLC0tLS0pKissLC00NTYwMDIwMTQpKysoKSovMDEtLzA2OTkxMzUrKywvLy8qKyszNTY5OzsqKiw6OjswMDExNDUoKiozNDUvMDIyNDY1Njg2Njk5OTozMzU0NjY4ODkiIyUiIyQ4OTkuMDEmKCowMjQwMTErLS4qKywwMTMhIiMpKiopKy0tLjAkJScxNDQvLzExNDYyNDQmKCk5OTslJig5OjskJSYxMzQrLS8gISIwMTIoKCk1NTUlJSUnJygwMDA4ODgiIiMhISI8PDw6Ojo5OTkpKSojIyQ7OzsyMjIpKSssLCw6Ozw1NjlrfLakAAAg2UlEQVR42jR6i3ea6rYvPgANIAhVXh8WvkQlioUiFlFcBtAmoiRNdzxqu9p0J7vrdK29zuPeex77nnvO/35n1r1ndHRktI0jTOacv/l7lCBK5UqVpOha/YxmWK7BC4TQFKVXrbYsnimqxuuMVlOQ0XltWjUdCwRJ1M+tC1KudOs9q6+da2adUewG0SC0SwELfHtgDds93VEuydEbl3QMWeNoYkR7b/0x1ZRobGI3mLwzAhePqTAwhg6aogjNsGy7/jwQ4rkdqe7CWLxF8k9LfMVFyRS7VJqtkrW8Vt/bkR8FZJao16ipknbC3Yw2lM7laO6HBEOadEZ2tpf65c4v8e3u7FyU6qbiNNyCuzXZ6pawgnwgmrpTT/Q7w2EZmiI
 J0dzWDI7mhQ80IfRnMu2kzA5r5r1pIFoia+/d93HRYp1GV8TbrkWoU/+jdI0Ff6yGwTjT1Hn8J+8m1rKpGiYPuNiHnMtNMIv+zpsk84MYTNW1/+DpwXLvckdOCMYowVNPREe0QlM8xRHXXFhcNDzupwsSmb5pH+0t0RP2Qk+QtI7F1Qm6JRC6ZPBtPq/dq/kH+jxtCljn9TIpW6rQIgmSVyj6lPICIw4N/taka41PFUInth0je9+jO6Kt1G4/a7V2LEgG02B0pHVuCZrgltSKMuIl5SyufUv9mYuQi+mFgzbBEtFo2g+Dh4sSTrLNu8JPh00sQydpb00tqXBvqRN7Q7kqzcnIxCGnvZt/WmJacoOEO6Dcn8Qre03pOCSQxbMOXUuDNx9SxuLz4W1I18gvjViQ67zV0rxdWL8Te/TQkuo8STS41DR48W7L6YP2uWIqiUV8rd6Gbf/rnegKZeG8TpAM6afhGze9JAOxbLjsnUXEbrZ9vLYd7MT32cPF5mKKxmjy7huaoD9n62GOxni3iIJwv0IzZAZjdZkUtolCNLVfYZNaquFjGszVVf+J0vrz4CawoKdHnOzb0NMH7CDBOybfYNJ4rfeMyFNjkFYVTzMFs87rnPGXLUOeNKRVc0LnU7/UIgelzsy3CMuth0YfvnY0wsD3vODUL3eJcKqHQpm8yM3XZQWJxO6Un9iYloyyLpOwN2obHy6W6gbpcb44XmyC+mg+itAcaprGcrwZCqMj/GmtKn0zPvpTz/Cv1dw21XwP3cRupg3H3MF/S71eTKj1YrdwKdc2Mw0fRmb2sFf8lW3aU6JbIZSEPqvXvjM7G/aApyXlXeqKfMq0g/Su3rUGJPSPrtGElgknrZM3xUXqsAP6zMCNVn5u8aJnSNpJv2uru7t2jfRziW2+GuhqfldUNbPk71olwo+46ePUo1U3WKk/e5YK07F/wGRgcpODmQnIlVeHCWBE4puBi2jq28UKpqiN1/4UOrGz
 59TNYrrQHtd+11sG40BGD+pXdelNqGOg4NXe8W4eacJV/NS9/2Umtym6WQqveqR9xdCMElpxnbkalM4Vf9uaEcWZaKdyibEIjWKxJZPN95niCL3GiaXyssIrHxoLkqkzLCXULN46/f2h3tQJgyip+Tk9EAjJ9aJshq7t8X45aowSKspMSvPf7r9R8yxNptIaHS5ozuEm6luPDApugyNP8OaqiQ4BjaequXA54SLC83eHIY2r+CZp4409Xqw8Aa2oI7XkCrQi+in0w5AqF/kLNrcUz+qkl/lAobY1jSnx5OJNhyXIz3qfNFlXc0TKaglNwdWkWYt9QQ1Kr6W8zue21iNrdJk+N5oCr2O9nEtWKC7IS5J/zdDEYrmnAYfg6agCy+qcgz7ZofeDc4PbUWSvkshWuAc7OjiUyLkj+RAtdlwXJcjxdpkTTHDhK8lBCi8+JtvDVL1W6elmOM++YS0LuSlaP1oUvAeiW3cFnvTr8EbTz1tsSMYdGeZe40sRWu5uAfj7q+ZoKv2FNQ0p5XY1lmlcigHZqTPpabufEVrNuNPi165w3uCVQJHyJqmSJ7ZHnguqwtCmwViIJijj04ba2JNYtB+yORf5gg1/9t9iw4vUpeqiunSAbf+IBdj/b+iG2qrHvuNP0Vd/+ThVZT/lrvHYjjgDbbyxaqgHNM2uhxa1GW3UedZYhMMwM4mQhltouK+IV4NdbIQNM+8Yv311RZk9kT4tiYR4LkyFcuPpdcjuhUuFqBAWRZa11lcZ3gEBlXywsNhrt+plISZP5DlsV9l4EgY6J3yZPTUcMrgaWAT3oI79eSbGEbcJpr6BD8kyDiVt+G0/hXosQN4NFXKlfWIfsIs0BHODVok1/IGnKFHJYIquh8Xo+2+bkQNTGgWmN/fZ0Y33LSj6lr1GyV7mWIKg7ZTRZPGuhF/zjRNcQ1UPtSYgnWQxSs0yrVhwNDcdGMNSNe2JT3WuzbAM3HykyAajS3Uphf6STKEqx
 Las9EnmnhA/lyj9Uj+JoY7SVgVmGLl46Rm2u98sbkap2lzAdKBG4r6LgulQOSSjQv1GWdQ0jtDUK/mAaqM1Uqjpu4k3Rvfvxv7YTxLSK+wN3E5jVIzmF23uZ7hiH/sVP49D7tvoKp4S8b1LuvRlivVB/algbhcFITYVXvDpLzpDfplR2uD5V4XJFxpjmIpLc9Y5sB2TpBRix7Bme6GZIq+06v3XzNeTcA4obQIKxrnT4C2JpOqD92dbmSX8MGazly5EsZVMvSU1f4RZwyu8iQXbVdeLlZrjuTT1jrY1uk5c7iZ7RsvhhluqAkq4JpVQAg7RJFtSu+xgJ8Pv6O1j5DkLxT8mkbfyRW5DrQmG7hiDIjCgBsADbjuof6YHLGeV6a5Q1Smx9joUXPpdaaDx97A/Wq00oJkdR7ZYuQRfS533JtxO1erduqWOYIt3wh0wpbLuCNIYkwxbswbikCUu2CDCS+Q+7rgVtfRcm+SOcdKPRlZ/rE7wNVUEE39KTS5uvUKN1PUnkloPkyzhyGQ8qkouEjJ3H/VXdqG6asSRiw3ecMlBvDDt8dDhBHXMwZ2Cajzjr7/76T+IavqPYvz6r7//E/3X3+N//h/0QozbjPgPiir69P/8X3/9F/yv8b/827/++98WItPu5/Hvwd8YPf5bp/2/lX/T/+Of/0MJ/lYTa+L/Ef+d9vN/3/2T6P/+jyTzu/evf6U7vxN7B6pJkRtAF6jUr8I+P8RsP/ptGhfqFk+pQ/DgAy6NJtRYJdXmp4gK7WLqLKJ+MaKhGjOojvL+SnIWrkpy0SLHDe4QuyNzaEA15mLMCcmE8Em+4HdOihW4/ZWuppJEmzeAwcDtv7MuLc9y2V5atvxXNe3S4DUMt5/Qy2LM9kSYKiVWBuKlfp4nxTntpuW03JbIlkiRvBXmT23g1I2OYe6IizUHPIq6zm6mbfsbteKmi/sg9J+ocQBMctGFO7iljo8TPN+z3jxw4do+ZwfqoR9dkN
 TKHyM305GpTkfhcHexVkPVGEbUOjuo9f0UMPHBFlGEx0SLvJvVRKTwW7PSew5oPme+E42+frJa9cGt2njS3dK5kIif2eYbhuSEQXEqMVfUjhGIuin0G0/W5ezJyJQy3SpMLai4M0JUWb5u1k9tny5bd1pPwYBpQuDCXZl62xg4CdVEAtflXHs6JKmP/pH6mOl796Lgopj0o8d5kKh00hxG3OSdEE/QBo9Hgr8JJqAeLDwJohG5j/DGh61Rc/+tf22/8kEnxHNCEjo0ElvvGfESZkqmz2BDcKV1H1buSkhkdg7p1IMGs2s17nYjpblrWuE2K9WEO/hcRp5e9oOF/QBmOaDtgil+oaU6szPrdwW65fOB0KUTsVUn7LFU7J8e6cxJIl9+FHw5MQMzuQJ+4oxMH3iW/5GK+hWuG0T+gTLs+fAjdtUd58TmIUq04EeyRCYCjkldow234aIgR5bqwrtZosZ+6YEqAmDqatJ9lWasz4IquKALPtd92hGI3Z2BdzzZue+REl1Om4DIWD+RrtUTOJLI+S0jHowXXdAxsGLSd40zYNuEUlOGhrwL6c7tcOtUOvpJCP7QBQS19H+GvZn05ewjlVLz+IGKoC9TyfQjLMBNmXCuqqtTdOSukZW48B0HqgSTCBrBnlFvF4CG2Su7yFzqmJFURK3UmTT3ru050r0ptUpMilYnBJWfl2Bv6kPlUuE1kxxpdzui9AubsR2N2boVSu81OulAwBqoSr1LZ0LLYOomyZHmjqnXlP72s8LnDouEJjtodBvdHaG1jMySYO7crWd90MpCRyCG14vb5IE7Arupw/y/RcCm/Tm3zK6zYj8PYNaGldiUfkB/LHWcmf2lVM+mwyU27a0qq2tscrQ/vzBjN26DnntIrOyGizzXK35yKQdYnUABkyN4saz3WD/viF+eCcsXnIajdWYJWaYHRstIis9CS+tqnFGmz2j5uzfr3Z4prqgK4XOT/PyftvjZqIm8lhkfxJ7
 Ol3CJF1piYBGAG8wtAk56Drw1YwmOpcz+NdfkSpSLplRXLXHL0Rquj6YW/gabqgK7Dgr6NwtH0B/AN7XrN+MVJ6AmXmUuqmQulrNNYPmH0RoDogydOKLo/QbfYNARSQQKISRCzRXU+q9WWJFL3LZW6u34CkeG97xC0NNGaJ0bvK6SnZS3zPskr5EtuCgjMWR5o2x5BqhKmDWJPRe7JMEOyRb5uUKlHaGVtq5ivSOaSliSXp9SQm2qk8MRJh10MAp9QQ2H5t59J8rjiwSZtoIfMGjlLPVNdYl/LBR0AO6WLGDmkLkIPRE45Y9MftdAK/yNu1Hn6tzOQTesgQ+8fSzB19wO91vCnO23vOWQdwJ63SJrYjdfKFW6W281PKs2k8iT9ai1cgJ4sa3xqdvmtxR8/+D1B8AKc2u+6JftryRhMWSQtoSBgIyyQGyxcnELuAasXN12oSriU4RMz1DD6RL0TSV+om7i1Yt+jEE/jnawM8cX/UhN4nkiv/w9eALrzNhXuQfOzFL0Fi6SjF7/4Qn8rLYBoa85cvgAnkCEBP+HPbEnquVXCZsMS/yzYw2Vru60P/+nJPYKkzZFjmbykzUoEqV836T5q3fP/L383dF82tx18/AZgZczMAgyeWYKmSZIqtHL+e+O4ZRcq9VI3g/qPeCoiK4pcgEqdbS0S/Be54sbVQOuJVPNBblIghzeasNu7h/g+Sz1IdhI5lCwq1nUb3Ji4OCIcqQZqtqJ5w7rXrg/DA9IgVmEGhDgGecEwnCTHffXcXs0V3OCEVzYDKS1vp/oX+ng+6XVU86UjA6FMO2RXOOOrqY1GgPvrAk9HV/BXtCu5RuwF8qgdGDLsBcui4E33ymdBip1X8uKyhIWT8qNRDsXz+gvO9UiEC0d8RG4Tf2x8H4slljgHtCBcxHLTWOYJm5H/fCPCzOgf9qgOUxTRZ0Pc6ha5yLuLVT9ntvIa6gacE99mCovdUumTQdRP4RPsS9129eEe2uS
 vvGh0bV4Y3QPPhPZMqhZWSMa5R0Hc1SGO4IVOQc0FrirlibTVfKRrYkD8kz3b+X65/QkUNaZdrdl3mCap0Hf3YcCw/LiouJYNbqz88UqeDYv93yO7vvXtgl4XCyAO4ODkY6W+83+LZU//p3/zXNGGrUKClCiOnL27iJZbNWDF02XXAOeFlB7IaADoMH1Yqr+UP9biyZDEa/iJt4MDeIz6GKTdLVBfWGVtRN4fdT2rgReX8UXwF2zOrradm4J0nyTgdPnai3RvzpZvCKDUqjOwD/QA6EDaMCLewX6QWYVnHY1sx1bd8ovYnPm1ZvPH+rE20lWjOCnZ66/xDt0QAl15FjfBcZp+i9OU0RNPQ0t3x2pSNWo8eiYudwsnuP1Hq6iH1LJCJynkYsfgJ0p3pF6SoQk2l+jqE8CPk+ziGJRSKjs+W5AO185umPdkYzlK4wl7TC9NxyyDP7ZoyYVoXiuS6SjnInlLWrwz1i8bGTKXX0AVQWkSfIlglW3zRJRJ8bg5VgE6ZEnqNu9B++0GNQvDQJvFize4ESNKBJP+8vA3LM4AX5SIBq08Mob+7QMTCZx4nwP/64+4BnlZC+8WtlP/CXw6t1PwMwkJ3jhP1FiXLhDF/3I6FGUzO2DSi9ABxKyyL9paZxSEz40ZCPQToDAJu1959k7QdbVxgB4icsu2s4zsTPJhcEDo+N1GX4zSk/wriRh8AqwL62972i9HJHd1ydaLXVzvKvOfGGw5RVcUVMiKXFH4APdkQU/dc5BX0YfKTNZYXCW9mb8bc8mufoQP6BbdQmT99ZjoYfr/go4TgQX9IDgztim7wyFeGMfbNaeqj8Dzs38pgcqwSv2hbqB3oSGKWKy+sesY7p57wAHldqE6NDudk/W7s/zjrK4rZFlFvaGxnSZdHbc1y47qDN6xkoK8O3bfr2j41dlJZ71rB4dlDqapPFa8N6xBrprUdtenUCHwxKNhw1uuTBh+9uU45k4REpQABN2bAO9D
 SLqoIL26gNroWgup5pUMxHUNSq4Gyz47vBPvilpo5f9OYI2ddAqTqmnxXERxQJ3UK8fHbVE9HagHi3+tqNRoNsArdmAxHA5LwtQo9ZAaNKUTljnokljo2x8scqVpEEIPc01fPCdHOCg0DeWBz8D5TVAAfx8aRH5X2ZYNI3ebKDZdeJ+oBDAxmRqJ30Eh2/DaeAy5diVNMpEDmXiPDsGTzBLXy8eVDdJoIafgx/gxMyQi454QrW56nCyeELgSuNNEmYkflF+t3CZQOVRWjKhIuCclmQSlAXT3+4JGG75B4t/5hQ+ldMP4LsAW6z3XmU6IJJwpnGVnsgUZhoY1fZlwTR8wSU7xRejf2uCx9Z5trVTRRJP9KnEb134dEieil6eCOGWgboI7xsqsqM99jfJLTePjygKlH2CVxxsse9QRzTBFjD/Kjqitr/CCTBt/SJ6nLxz7cKP9pFqBpp0lN5y+adKNsZjrPuroemZauH9aTTFD3EKHW8S55XBLFQAt1jgxTQCTwxmx/JyfsZDN1RroN3VaxpSenpIX7K+ZbL8VdlQDcI4Cbzg3QJLa9yVqNxUelu+EtxLVqeekaAvSJkO6sSVqbUajxqhKshNpvZqoeApF0k/0P0ikkwUcbdwc4A1ejN7Oo0O15kG7hTMoK3hZRBCX7YYeLW0wvcXx/18n/u37yLgzBYVBUvORGli+sfRcX/74uD6P4hq+7xu54TlWJLFzT63uwUDwuEDdOjJQqx7JV+ZjaEAPi7t0MMrR4Q8Rkf18uxD6RK0RKh0hL8YU+DeL97i4pa5ZSyAfXKwZRS/8gXcxdZXm62RBDj8U3sN8x95b5PpPs/mCBKYvpaA50pN5Ct/499AFTtwQ5vgeSh+NHrKIi4NVpwM/XzRaNfJD856lPE6M21zWPguFsH7jbLVyEDfRmt4VwrhCJ5VTYmcSPfGgO5clfN+vbaDZ7sakU5+2vZ2WCDY031NxJarVytfDDVtiafcTGO2rJ
 /taoL3zChN2qmjxofczTOYQPPVQPh0JVtYgdUQINcSiNEEy58UdYXX1MpWUCEBx7LbcGtAm8XWRQTVOaoV3ySri4RShhs/B/0m4jX6OAwXOvcA09bNSG4czEGv/Wey6V/jbTCNTW6awXdNTcA1GsPe1E9fZdGl7R0vyoVpIdJtfC6d32NNErrvq/R+d65VG+YOwRXppXxOCYyGNSf1K3x6VxAW/vtz4EC1SgCOSPdN62sLsoIzuDfg8GwZAbquVO8HIuFP/ToVoeUB7nnwMF35a1wK1tI6fkrqFKhQdeJpwyls0pIy8AZde3/6LUUbFaYJthyUJSU/kqDXTLQElnn0Jr4B2RVghNrmNmoEn7pXIeshPguXVsvwoTdmClq49JJU3LWhHyWTrJL9bRP6VKv3tZoA/th77p5Jw++OEENvyvWy/pNeExiDUVQaXIRGh8xySZTI36yueFaSXo1uJY0RnXYgEOoWWOJHeaVuX/bGNhHsh2yinznl/++NJcE9j6fBPRcBdq9hb8awNw8U7Bl6GM7x69EDOIIbX/npZ++amlHR9L/35mE/2Ss4gb0xCcY4VyTFLRE796vHysLAamqcyO+aFQyJIDBNslbH2/MrAvZiSEIedc/cqjmv4fbda2pXbv+F5a2szSsdkm9noiNURXt8edUhGUF6fSZWd1IJaXKFwD+49R6eCXD4Bkef7j9tRtNMVgW8BhRz/Qpy1TmeYk0doyjZoJSbePOReVHgkFsCFuQJ+Lgc4BxeAsK/cOiNDRmdNw0ctYhn/nQ498dYI5znzGLoJi1rav7Cn88rL3wLePVtDK5gl77Tki3gHEsIAQ2+IKgarj7Y8W1IQzV5V9N+0TjLqbg68WfKcOmBCOj3JkwJhVIkwDhc+JorXuZEPMEh0vvH3x7iqf+VAwXgd4diZiaJD1zHL9Snx6Wfg4IugreyhabQkcir+y5XgDtdx3Avs7lkeeCBwDvZoTUCXx5QrZkcEqWfYEi
 EYRs/EphmRALSNGR1Iclgdr5VFoELpzF4++f35w3/j0t5ucW3n2ch4PQCLuUXupsPRR7UA5FjSKrMtPcKAZJfagO4lGE7FH3YKMjorpK0ZxAv+i2JkJhtAMWWWFej4RhPR/cJ3DxwocCvXDi4SGZU4cu+K32XndiFWgopAl+0GApcwf1XvymJcFs39jExIBO4yUjU9MExBLQYc9H+W7+IgdESPRpciT+rKZPebVtaVq+1GYO/5xTAL3HASjNTGIgMvdjWbgc7JvdE1zIFpuC0U9ESiZyzBixzxWxj4Kwh8My34q+FK3KNLtmsA1qyrmKSNQOXCPUZd+ONelBTvFoUI/CYsqa/RhtKiyMf2CgSFqEPk59Y3uqnlZ8gFpswfSYyko23yVZYxzKGxGm49Zqxg1l8oz5Ra9XaRwHkuxepmgyhm0SoNy2KlbcEqK+9QqS9PNx9Ihm9U7gsR55SSJ1FBDNnkuWKxIZ0SDpXuOGwZdoUbOMDPHP4vBAgz2VlSEJAHZGJVbYIg7l/FO5KfIVvxC8pPPxMGcNMoevFDeStt2iqztE10n2TA4dgJH76YS9HDhKHD3iCx6ieFX84BAI3QQnngh76f5ruPQVbr5qZmck/5UjDc26lfrOvUBWy0Ogl8bCoOkMOns81TnC3cuUS9KW8+9A+fe3XYZOFUPG1u5epSSmDLw0s5s2F0W30ANeo+zJkJQz9SPZgzwYpEoktofhGVfmLOAB20boCbW1QWq/NpET/hnMecw/uSyAH4NJc3ECOU4nnkK1fj3S/i5dwb3R7k00AqQQUwt7Ie1qV0aY/VQX0J8hLPy7eBNXMHYZYDNxHZ2Qh6AuXJxq+AeRec/Q+JLhZV6hpXwQEzw7bf5v9uUf2vpq3qlhmy0IIGTkwYdCfSAFmqbdo+3XvDTDjFJde0mbeQLcn2n31xaAqJ0ixO/CLsT4I4G4DoncVTgRGNBtsCcjISWT+oeXZ4Iedw/8OsJI1aPnNKLX/
 60VvcZb94uasRxCkqlPQ11u1Sa2hHvB80WQENxVyzjns0/PiEByyil21Te6oisk3mNCEMrhouCFO3yEZTHHOCMy9eb/4Tmi8cVf3Lf7P53SY2hX3PSN033As3ETIMLHWumWEO9JXHA2y2SIBlIPpLGG2qvNsCIlIr+B1SWAqRKm2w6Blf7U+zCSBwJrfHG5i8J5Gax/cVonMlon7aHJX/gSvucIncRP93XCqkv7D8IFKFsLiBgHqUpXhE3pYjEcV1dk/JD9zFVCfEaQIVX8Jmfz7IIofcBKQ4OaG+C3xC2veX9CD+iAFXDNaGg9eTVxvkbJRJlW4Nk9Wk13kn696jWppRDe/8pDrYMO9ZyxZ98ReKSz9kWKLLyk2zCZgAniCkLJVX3n1M9DYbomyahWiv/KixRIV9hj/oFz87I+HLznbPTjpa+D+bZQnMuRsljTpv90vQUt/pK7jCFnA30B/jtroSF2/m/gpWn1aQs5WeA6ghzF8SdqWI20fghdSeDOCSCmLgTkfaGgGDmw7nHFkRzGtag57IHS2na06I+gzEphXo1w/Zx2BM/jKL2nZoFjHggtFQjYi8nSVRSXIE58RPbBObXk7uuIL9+rs/5Zo7suJInEUxgsiZZAWS25iBtpEiZeBgDtghEoAE0sjcayNq85M4tbu/LF5h51335PsGzQ09O875+vUS89lkWMyNOFoip2PuyWyMP/iU2XIZdfCCJNDjebDoBLQdpy7QQZC7s9c0wjHJervQNDu2jWzBW5MSAJMr7bP+Iv92BkS/GGgzjEn7MF1IRKFwwzbjbS4/slGOmhx9cZrFu7HSEefojNv3r0UaKfKOWzXsq1zEugbzlMDFsacRJJI/iJlK3vtkZ+PLZIVMFlKA32wbq2Kd5T0uCLZ1CPkAfCdzkz2EYscjDcZq2AWfziN2covN4kXE1lQXPPLTNM1xx3tbiepcO/t3SWm4w87qfh99SL0ZnY+LKFPLPeXVM2mIIoVW
 t+9Nk0I7nY4O79iGYqxZ8RVz289an6NVdJWnSKZvJQCAuHNiVaDxPAFoH392t9wot5t0/qmU95eEWNbU2udUW5sN9JVqcYlvAIfLeYC33oUzzxZgSktsv21mA7Uly1FA5VnoJFh6N244Wmv3YJGFv/TCPryaw+ZORlpZjQdq/2DYXr3EZskfed0G61P09ipTKmlTQ1067Rg5+PAk5FlQ9e0SWbGf2B/08kqymOTMVOznsALHHNFH4LFRKl2F/NOiYFl9khNHnSu9Ak5sq26Ynl/i2fdTle29Y1ugqmR5Yj4YT9pvslFyYCbw0mNFr5rVQm1LvkG27QMq9ph3t8fmn6r6SQ4oSbr5tz+J1kIawGzDxb6VYOvvWhobDTXfBeNv3b4aNm5XUinsCGqG2q/45m3+LoCOsddFceYhRx1Tsss9PLdPfJdErFMjYd3gddjiP0+XQjcRadZP6bwNLySvunFf20Czy6JqdEW2a96KxdYdOryBv1BjbuUq2yCHeh+6sk7fGmmPi50pe/1l5TyPe5oHW9oPnhPswLyf2TFDdCyYlhwBCstv5C1HwlW7xWoGT9XZt4qVj5WryLPLLD6h/5cMLEjWzgCeAIKNsLak92aBqBsHl4AJwl2N4jfvbSkBExGimv0nFvv09uDScQbjx+w4kPQjgjlW+g9ws9VEJvI2k8N6XxVu0uIwovgTFdunG24gBtaDi+y1YLQwZ8mwbip5fVlO3k0n0AEr/ETbtu8Vjkm+nNSiEb7X/3fMjBL5A8PdgG+/FnbexbFFExmEfetXAnisEKy5z44WVPpQZjSy/jzeGn4yDRsFGqhh87QPaDBWhlo37IFbe/C0xynS91d2tP/AJoJS0sVF6iwAAAAAElFTkSuQmCC&quot;);
+}
+
+#menu::after {
+  display: block;
+  content: '';
+  padding-top: 80px;
+}
+
+#logo {
+  position: fixed;
+  bottom: 10px;
+  right: 10px;
+  background: rgba(255,255,255,.1);
+  font-size: 11px;
+  display: block;
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  text-align: center;
+  -webkit-border-radius: 20px;
+  -moz-border-radius: 20px;
+  -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
+  -moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
+  color: inherit;
+}
+
+#menu li a {
+  display: block;
+  color: white;
+  padding: 0 35px 0 25px;
+  -webkit-transition: background 300ms;
+  -moz-transition: background 300ms;
+}
+
+#menu li {
+  position: relative;
+  list-style: none;
+}
+
+#menu a:hover,
+#menu a.active {
+  text-decoration: none;
+  background: rgba(255,255,255,.1);
+}
+
+#menu li:hover .cov {
+  opacity: 1;
+}
+
+#menu li .dirname {
+  opacity: .60;
+  padding-right: 2px;
+}
+
+#menu li .basename {
+  opacity: 1;
+}
+
+#menu .cov {
+  background: rgba(0,0,0,.4);
+  position: absolute;
+  top: 0;
+  right: 8px;
+  font-size: 9px;
+  opacity: .6;
+  text-align: left;
+  width: 17px;
+  -webkit-border-radius: 10px;
+  -moz-border-radius: 10px;
+  padding: 2px 3px;
+  text-align: center;
+}
+
+#stats:nth-child(2n) {
+  display: inline-block;
+  margin-top: 15px;
+  border: 1px solid #eee;
+  padding: 10px;
+  -webkit-box-shadow: inset 0 0 2px #eee;
+  -moz-box-shadow: inset 0 0 2px #eee;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+}
+
+#stats div {
+  float: left;
+  padding: 0 5px;
+}
+
+#stats::after {
+  display: block;
+  content: '';
+  clear: both;
+}
+
+#stats .sloc::after {
+  content: ' SLOC';
+  color: #b6b6b6;
+}
+
+#stats .percentage::after {
+  content: ' coverage';
+  color: #b6b6b6;
+}
+
+#stats .hits,
+#stats .misses {
+  display: none;
+}
+
+.high {
+  color: #00d4b4;
+}
+.medium {
+  color: #e87d0d;
+}
+.low {
+  color: #d4081a;
+}
+.terrible {
+  color: #d4081a;
+  font-weight: bold;
+}
+
+table {
+  width: 80%;
+  margin-top: 10px;
+  border-collapse: collapse;
+  border: 1px solid #cbcbcb;
+  color: #363636;
+  -webkit-border-radius: 3px;
+  -moz-border-radius: 3px;
+}
+
+table thead {
+  display: none;
+}
+
+table td.line,
+table td.hits {
+  width: 20px;
+  background: #eaeaea;
+  text-align: center;
+  font-size: 11px;
+  padding: 0 10px;
+  color: #949494;
+}
+
+table td.hits {
+  width: 10px;
+  padding: 2px 5px;
+  color: rgba(0,0,0,.2);
+  background: #f0f0f0;
+}
+
+tr.miss td.line,
+tr.miss td.hits {
+  background: #e6c3c7;
+}
+
+tr.miss td {
+  background: #f8d5d8;
+}
+
+td.source {
+  padding-left: 15px;
+  line-height: 15px;
+  white-space: pre;
+  font: 12px monaco, monospace;
+}
+
+code .comment { color: #ddd }
+code .init { color: #2F6FAD }
+code .string { color: #5890AD }
+code .keyword { color: #8A6343 }
+code .number { color: #2F6FAD }
+&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;div id=&quot;coverage&quot;&gt;&lt;h1 id=&quot;overview&quot;&gt;Coverage&lt;/h1&gt;&lt;div id=&quot;menu&quot;&gt;&lt;li&gt;&lt;a href=&quot;#overview&quot;&gt;overview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;cov high&quot;&gt;95&lt;/span&gt;&lt;a href=&quot;#webidl2.js&quot;&gt;&lt;span class=&quot;basename&quot;&gt;webidl2.js&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;a id=&quot;logo&quot; href=&quot;http://visionmedia.github.com/mocha/&quot;&gt;m&lt;/a&gt;&lt;/div&gt;&lt;div id=&quot;stats&quot; class=&quot;high&quot;&gt;&lt;div class=&quot;percentage&quot;&gt;95%&lt;/div&gt;&lt;div class=&quot;sloc&quot;&gt;572&lt;/div&gt;&lt;div class=&quot;hits&quot;&gt;548&lt;/div&gt;&lt;div class=&quot;misses&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;files&quot;&gt;&lt;div class=&quot;file&quot;&gt;&lt;h2 id=&quot;webidl2.js&quot;&gt;webidl2.js&lt;/h2&gt;&lt;div id=&quot;stats&quot; class=&quot;high&quot;&gt;&lt;div class=&quot;perce
 ntage&quot;&gt;95%&lt;/div&gt;&lt;div class=&quot;sloc&quot;&gt;572&lt;/div&gt;&lt;div class=&quot;hits&quot;&gt;548&lt;/div&gt;&lt;div class=&quot;misses&quot;&gt;24&lt;/div&gt;&lt;/div&gt;&lt;table id=&quot;source&quot;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Line&lt;/th&gt;&lt;th&gt;Hits&lt;/th&gt;&lt;th&gt;Source&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class
 =&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; tokenise &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; tokens &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;6&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;s
 ource&quot;&gt;        &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   re &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;s&quot;&gt;&quot;float&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;s&quot;&gt;/^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][-+]?[0-9]+)?|[0-9]+[Ee][-+]?[0-9]+)/&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;8&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;integer&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;      &lt;span class=&quot;s&quot;&gt;/^-?(0([Xx][0-9A-Fa-f]+|[0-7]*)|[1-9][0-9]*)/&lt;/spa
 n&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;identifier&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;/^[A-Z_a-z][0-9A-Z_a-z]*/&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;10&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;string&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;s&quot;&gt;/^&quot;[^&quot;]*&quot;/&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&
 quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;whitespace&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;/^(?:[\t\n\r ]+|[\t\n\r ]*((\/\/.*|\/\*(.|\n|\r)*?\*\/)[\t\n\r ]*))+/&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;other&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;s&quot;&gt;/^[^\t\n\r 0-9A-Z_a-z]/&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;13&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;14&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/t
 d&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   types &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;15&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;16&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;329&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; k &lt;span class=&quot;k&quot;&gt;in&lt;/span&gt; re&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; types&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;k&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/t
 d&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;k&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;18&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2914&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; matched &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;l
 ine&quot;&gt;19&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2914&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; i &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; n &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; types&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt; i &lt;span class=&quot;k&quot;&gt;&lt;&lt;/span&gt; n&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt; i&lt;span class=&quot;k&quot;&gt;++)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;20&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;13325&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/
 span&gt; type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; types&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;i&lt;span class=&quot;k&quot;&gt;];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;21&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;13325&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                str &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;re&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;type&lt;span class=&quot;k&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tok&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;22&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2914&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;   
                  tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; tok &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;23&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2914&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    matched &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;24&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2914&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k
 &quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;25&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;26&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;16239&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;matched&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;27&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;
 &gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;28&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5828&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;matched&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;29&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; Error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Token stream not progressing&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;
 /tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;30&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;31&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;32&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;33&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;34&lt
 ;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; parse &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;35&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; line &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;36&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        tokens &lt;span class=&quot;k&q
 uot;&gt;=&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;slice&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;37&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;38&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; FLOAT &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;float&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;39&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   INT &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;integer&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt
 ;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;40&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   ID &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;identifier&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;41&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   STR &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;string&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;42&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   OTHER &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;other&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&g
 t;&lt;td class=&quot;line&quot;&gt;43&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;44&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;45&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; WebIDLParseError &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; line&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; input&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span
 &gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;46&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;message &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; str&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;line &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; line&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;48&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=
 &quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;input &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; input&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;49&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;tokens &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;50&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;51&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&
 quot;source&quot;&gt;        WebIDLParseError&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;prototype&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;toString &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;52&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;message &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;, line &quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;line &lt;span class=&quot;k&quot;&gt;+&lt;/s
 pan&gt; &lt;span class=&quot;s&quot;&gt;&quot; (tokens: '&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;input &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;')&lt;/span&gt;&lt;span class=&quot;t&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;53&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                   JSON&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;stringify&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &l
 t;span class=&quot;s&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;54&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;55&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; error &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span
 &gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;57&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; tok &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; numTokens &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; maxTokens &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;58&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;numTo
 kens &lt;span class=&quot;k&quot;&gt;&lt;&lt;/span&gt; maxTokens &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;k&quot;&gt;&gt;&lt;/span&gt; numTokens&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;59&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                tok &lt;span class=&quot;k&quot;&gt;+=&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;numTokens&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                numTokens&lt;span class=&quot;k&quot;&gt;++;&lt;/s
 pan&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;61&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;62&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; WebIDLParseError&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; line&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; tok&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;slice&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;k&quo
 t;&gt;));&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;63&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;64&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;65&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; last_token &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;66&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    
     &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;67&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; consume &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;type&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;68&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;8778&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;
 &lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;!==&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;69&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5470&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;typeof&lt;/span&gt; value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;undefined&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;
 /span&gt; value&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;70&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1738&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                 last_token &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;shift&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1738&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                 &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; last_token&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;72&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;             &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;
 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;73&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;74&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;75&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ws &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;76&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6961
 &lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;77&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;c&quot;&gt;// console.log(&quot;tokens.length&quot;, tokens.length, tokens[0]);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6115&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&qu
 ot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;whitespace&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;79&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1172&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; t &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;shift&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;80&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2294&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                t&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;replace
 &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/\n/g&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;m&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; line&lt;span class=&quot;k&quot;&gt;++;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; m&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;81&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1172&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; t&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;82&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt
 ;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;83&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;84&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;85&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; all_ws &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr clas
 s=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;86&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5366&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; t &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;whitespace&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; value&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;87&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5366&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&
 gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;88&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6538&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; w &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;89&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11904&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;90&lt;/t
 d&gt;&lt;td class=&quot;hits&quot;&gt;1172&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                t&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;+=&lt;/span&gt; w&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;91&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;92&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6538&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;t&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;k&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;0&
 lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; t&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;93&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;95&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; integer_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&
 quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;96&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;273&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;97&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;273&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;98&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;312&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&q
 uot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;unsigned&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;unsigned &quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;99&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;273&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;100&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;287&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span 
 class=&quot;s&quot;&gt;&quot;short&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;short&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;101&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;259&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;long&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;102&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;41&
 lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret &lt;span class=&quot;k&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;long&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;103&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;41&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;104&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;43&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;long&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot
 ;k&quot;&gt;return&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot; long&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;105&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;39&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;106&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;107&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;218&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;
 ret&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Failed to parse integer type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;108&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;109&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;110&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; float_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&l
 t;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;111&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;218&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;112&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;218&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;113&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;222&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt
 ; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;unrestricted&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;unrestricted &quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;114&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;218&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;115&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;257&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&
 quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;float&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;float&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;116&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;182&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;double&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;+&lt;/
 span&gt; &lt;span class=&quot;s&quot;&gt;&quot;double&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;117&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;176&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Failed to parse float type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;118&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;119&lt;/td&gt;&lt;td class=&quot;hi
 ts&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;120&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; primitive_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;121&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;273&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; num_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; integer_type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; float_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt
 ;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;122&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;370&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;num_type&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; num_type&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;123&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;176&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;124&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;186&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span clas
 s=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;boolean&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;boolean&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;125&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;167&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;byte&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;byte&quot;&lt;/span&gt;&lt;span class=&quot;k&quot
 ;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;126&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;168&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;octet&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;octet&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;127&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&qu
 ot;&gt;128&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;129&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; const_value &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;130&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;true&quot;&lt
 ;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;131&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;19&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;false&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;132&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/t
 d&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;null&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;133&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;14&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Infinity&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt
 ;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; Infinity&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;134&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;13&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;NaN&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; NaN&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;135&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;
 =&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;FLOAT&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;INT&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;136&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;19&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;*&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;137&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/
 td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; tok &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;-&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;138&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tok&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;139&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;
 span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Infinity&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;-&lt;/span&gt;Infinity&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;140&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;unshift&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tok&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;141&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class
 =&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;142&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;143&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;144&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; type_suffix &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&q
 uot;&gt; &lt;td class=&quot;line&quot;&gt;145&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;249&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;146&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;263&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;147&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;263&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&l
 t;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;?&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;148&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;obj&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;nullable&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Can't nullable more than once&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;149&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    obj&lt;span 
 class=&quot;k&quot;&gt;.&lt;/span&gt;nullable &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;150&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;151&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;252&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;[&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&
 lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;152&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;153&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;]&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated array type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;154
 &lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;obj&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;array&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; obj&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;array &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;155&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; obj&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;array&lt;span class=&quot;k&quot;&gt;++;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;156&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;
 source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;157&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;249&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;158&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;159&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;160&lt;/td&gt;&lt;td class=&quot;
 hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;161&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; single_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;162&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;261&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; prim &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; primitive_type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;163&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&
 lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; sequence&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; nullable&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; array&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; union&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;164&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;
 ;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;165&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;261&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;prim&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;166&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;99&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; prim&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;167&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;t
 r class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;168&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;162&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;sequence&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;169&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;170&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;sourc
 e&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&lt;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;171&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;sequence&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;172&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&
 quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;173&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;174&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;sequence &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;175&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&
 gt; type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Error parsing sequence type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;176&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;177&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&gt;&quot;&lt;/
 span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated sequence&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;178&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;179&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;?&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; re
 t&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;nullable &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;180&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;181&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;182&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot
 ;&gt;183&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;184&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;158&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;185&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;169&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;name&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;
 /span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;186&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;147&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;187&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;188&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;246&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            type_suffix&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr
 &gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;189&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;246&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;nullable &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;any&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Type any cannot be made nullable&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;190&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;246&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;spa
 n class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;191&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;192&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;193&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; union_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr clas
 s=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;194&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;195&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;19&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;(&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;196&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt; 
            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; sequence&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; nullable&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; array&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; union&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; idlType&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit
 &quot;&gt; &lt;td class=&quot;line&quot;&gt;197&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; fst &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Union type with no content&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;198&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;fst&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&q
 uot;line&quot;&gt;199&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;200&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;201&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;10&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,
 &lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;or&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;202&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; typ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No type after 'or' in union type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;203&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;             
    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;typ&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;205&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&qu
 ot;&gt;&quot;Unterminated union type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;206&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            type_suffix&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;207&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;208&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td cl
 ass=&quot;line&quot;&gt;209&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;210&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;211&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;261&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; single_type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; union_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&
 gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;212&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;213&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;214&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; argument &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;215&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;79&lt;/td&gt;
 &lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; optional&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; variadic&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;216&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;79&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;extAttrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; extended_attrs&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;217
 &lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;79&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;218&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;79&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;optional&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;219&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;optional &lt;span class=&quot;k&quot;&gt;=
 &lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;220&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;221&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;222&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;79&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quo
 t;line&quot;&gt;223&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;87&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;type&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;224&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;optional&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;225&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;69&lt;/
 td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;226&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;69&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length &lt;span class=&quot;k&quot;&gt;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;227&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;===&lt;/span&
 gt; &lt;span class=&quot;s&quot;&gt;&quot;other&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;.&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;228&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;other&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;[&
 lt;/span&gt;&lt;span class=&quot;s&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;.&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;229&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;other&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tokens&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;].&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span cl
 ass=&quot;s&quot;&gt;&quot;.&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;230&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;231&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;shift&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;232&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;shift&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td cla
 ss=&quot;line&quot;&gt;233&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;shift&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;234&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;variadic &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;235&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;236&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td cla
 ss=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;237&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;238&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name in argument&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&
 quot;&gt; &lt;td class=&quot;line&quot;&gt;239&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;240&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;optional&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;241&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&l
 t;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;242&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;default&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; default_&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;243&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;244&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&q
 uot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;245&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;246&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;247&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; argument_list &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;248&lt;/td&gt;
 &lt;td class=&quot;hits&quot;&gt;59&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; arg &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; argument&lt;span class=&quot;k&quot;&gt;(),&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;249&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;67&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;arg&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;250&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;51&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span 
 class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;arg&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;251&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;51&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;252&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;71&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;253&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;122&lt;/td&gt;&lt;td class=&quot;sourc
 e&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;254&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;20&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;255&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;20&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; nxt &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; argument&lt
 ;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Trailing comma in arguments list&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;256&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;20&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;nxt&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;257&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;258&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot
 ;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;259&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;260&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; simple_extended_attr &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;261&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt
 ;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;262&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;263&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;name&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;264&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt
 ;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;265&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;266&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;arguments&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;267&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;spa
 n class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;268&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;269&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; eq &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;270&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td clas
 s=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;eq&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;271&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;272&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;rhs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;273&lt;/td&gt;&lt;td class=&quot
 ;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;rhs&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No right hand side to extended attribute assignment&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;274&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;275&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&l
 t;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;276&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;(&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;277&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;arguments&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; argument_list&lt;span class=&quot;k&quot;&gt;(
 );&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;278&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;279&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unclosed argument in extended attribute&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;280&lt;/td&gt;&
 lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;281&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;282&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;283&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;284&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot
 ;source&quot;&gt;        &lt;span class=&quot;c&quot;&gt;// Note: we parse something simpler than the official syntax. It's all that ever&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;285&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;c&quot;&gt;// seems to be used&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;286&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; extended_attrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;287&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;415&lt;/td&gt;&lt;td class=&quot
 ;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; eas &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;288&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;415&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;289&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;815&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;[&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; eas&lt;span clas
 s=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;290&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;15&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            eas&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; simple_extended_attr&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Extended attribute with not content&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;291&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;15&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt
 ;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;292&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;15&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;293&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;294&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                eas&lt;span class=&quot
 ;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;simple_extended_attr&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Trailing comma in extended attribute&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;));&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;295&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;296&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;297&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;15&lt;/td&
 gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;]&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No end of extended attribute&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;298&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;15&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; eas&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;299&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&g
 t;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;300&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;301&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; default_ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;302&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;30
 3&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;304&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;305&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; def &lt;span class=&quot;k&quot;&gt;=&lt;/
 span&gt; const_value&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;306&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;typeof&lt;/span&gt; def &lt;span class=&quot;k&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;undefined&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;307&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; def&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;308&l
 t;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;309&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;310&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; str &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;STR&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No value for default&quot;&lt;/span
 &gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;311&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; str&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;312&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;313&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;314&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/spa
 n&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;315&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;316&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; const_ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;317&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;180&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;
 318&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;348&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;319&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&g
 t;,&lt;/span&gt; nullable&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;320&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;321&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; typ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; primitive_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;322&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&qu
 ot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;typ&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;323&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                typ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No type for const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;324&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                typ &lt;span cla
 ss=&quot;k&quot;&gt;=&lt;/span&gt; typ&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;325&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;326&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; typ&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;327&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot
 ;&gt; &lt;td class=&quot;line&quot;&gt;328&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;?&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;329&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;nullable &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;330&lt;/td&gt;
 &lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;331&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;332&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&l
 t;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;333&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;334&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;335&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;sp
 an class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No value assignment for const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;336&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;337&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; cnt &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; const_value&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;338&lt;/td&gt;&lt;td class=&quot;
 hits&quot;&gt;24&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;typeof&lt;/span&gt; cnt &lt;span class=&quot;k&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;undefined&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; cnt&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;339&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No value for const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;h
 it&quot;&gt; &lt;td class=&quot;line&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;341&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated const&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;342&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;12&lt;/td&gt;&lt;td class=&qu
 ot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;343&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;344&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;345&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; inheritance &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/sp
 an&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;346&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;89&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;347&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;89&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;348&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;              
   all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;349&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; inh &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No type in inheritance&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;350&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; inh&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span cl
 ass=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;351&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;352&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;353&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;354&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; operation_rest &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot
 ;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;355&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;356&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;57&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;
 357&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;358&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;?&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;359&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;
 /td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;360&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;(&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Invalid operation&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;361&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot
 ;s&quot;&gt;&quot;arguments&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; argument_list&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;362&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;363&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unter
 minated operation&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;364&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;365&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated operation&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=
 &quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;366&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;56&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;367&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;368&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;369&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; callback &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&
 quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;370&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;144&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;371&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;144&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;372&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;286&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&
 quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;373&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;374&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; tok &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;interface&quot;&lt;/span&gt;&lt;s
 pan class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;375&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tok&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;376&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;unshift&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tok&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;377&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret &lt;span class=&
 quot;k&quot;&gt;=&lt;/span&gt; interface_&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;378&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;callback interface&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;379&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;380&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quo
 t;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;381&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;382&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;spa
 n class=&quot;s&quot;&gt;&quot;callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;383&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;384&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/sp
 an&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No assignment in callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;385&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;386&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; return_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;387&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;s
 pan class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;388&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;(&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No arguments in callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;389&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;arguments&quot;&lt;/span&gt;&lt;span class
 =&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; argument_list&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;390&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;391&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;)&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot
 ;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;392&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;393&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated callback&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;394&lt;/td&gt
 ;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;395&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;396&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;397&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; attribute &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&
 lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;398&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;399&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; grabbed &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;400&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt
 ;tr&gt;&lt;td class=&quot;line&quot;&gt;401&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;           &lt;span class=&quot;s&quot;&gt;&quot;attribute&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;402&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;403&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   stringifier&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/t
 d&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;404&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   inherit&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;405&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   readonly&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;406&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&qu
 ot;&gt;407&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;408&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr c
 lass=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;409&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;last_token&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;410&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;411&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;152&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span cl
 ass=&quot;s&quot;&gt;&quot;stringifier&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;412&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;stringifier &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;413&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;last_token&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;414&lt;/td&gt;&lt;td c
 lass=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;415&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; w &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;416&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;159&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cl
 ass=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;417&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;inherit&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;418&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot
 ;&gt;||&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;stringifier&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Cannot have a static or stringifier inherit&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;419&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;inherit &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;420&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quo
 t;k&quot;&gt;(&lt;/span&gt;last_token&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;421&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; w &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;422&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;423&lt;
 /td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;424&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;readonly&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;425&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;32&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;readonly &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt
 ; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;426&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;32&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;last_token&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;427&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;32&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; w &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;428&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;64&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;       
          &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;429&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;430&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;154&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;attribute&quot;&lt;/span&gt;&lt;span class=&quot
 ;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;431&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                tokens &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; grabbed&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;concat&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;432&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;433&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;
 &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;434&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;435&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No type in attribute&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;436&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&
 quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;sequence&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Attributes cannot accept sequence types&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;437&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;438&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=
 &lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name in attribute&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;439&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;440&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&
 lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;441&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated attribute&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;442&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;94&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;443&lt;/td&gt;&lt;
 td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;444&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;445&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; return_type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;446&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;61&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class
 =&quot;k&quot;&gt;var&lt;/span&gt; typ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;447&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;61&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;typ&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;448&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;void&quot;&lt;/span&gt;&lt;span class=&q
 uot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;449&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;void&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;450&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;451&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;
 No return type&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;452&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;453&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;61&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; typ&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;454&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;455&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;sourc
 e&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;456&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; operation &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;457&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;458&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt
 ;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;459&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;           &lt;span class=&quot;s&quot;&gt;&quot;operation&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;460&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   getter&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;461&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   setter&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;         &lt;span class=&quot;k&quot;&
 gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;462&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   creator&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;463&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   deleter&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;        &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;464&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   legacycaller&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;k&quot;&gt;fals
 e&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;465&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;466&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   stringifier&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;467&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/t
 d&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;468&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;469&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;470&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;87&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&
 quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;getter&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;getter &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;471&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;74&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;setter&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;sett
 er &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;472&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;65&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;creator&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;creator &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;473&lt;/
 td&gt;&lt;td class=&quot;hits&quot;&gt;65&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;deleter&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;deleter &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;474&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;62&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/sp
 an&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;legacycaller&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;legacycaller &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;475&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;476&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td
 &gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;477&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;60&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;getter &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;setter &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;creator &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;deleter &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;legacycaller&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;478&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/t
 d&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;479&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; return_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;480&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                operation_rest&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;481&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;17&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&q
 uot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;482&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;483&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;43&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;484&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&l
 t;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;static&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;485&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; return_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;486&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                operation_rest&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&qu
 ot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;487&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;488&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;489&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;42&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quo
 t;s&quot;&gt;&quot;stringifier&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;490&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;stringifier &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;491&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;492&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt
 ;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;493&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; return_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;494&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                operation_rest&lt;span class=&quot;
 k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;495&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;496&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;497&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;39&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; return_type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot
 ;&gt; &lt;td class=&quot;line&quot;&gt;498&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;39&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;499&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;39&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;iterator&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;500&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/spa
 n&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;501&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;type &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;iterator&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;502&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;object&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cl
 ass=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;503&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;iteratorObject &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;object&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;504&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;505&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;
 /span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;506&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;507&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&q
 uot;&gt;&quot;No right hand side in iterator&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;508&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;iteratorObject &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;509&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;510&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&
 lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;511&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated iterator&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;512&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;51
 3&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;514&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;515&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;35&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                operation_rest&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;516&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;35&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quo
 t;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;517&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;518&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;519&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;520&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; identifiers &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt
 ;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;arr&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;521&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;522&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;523&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;11&lt;/td&g
 t;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;524&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;525&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot
 ;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Trailing comma in identifiers list&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;526&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;6&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    arr&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;527&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&
 quot;line&quot;&gt;528&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;529&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;530&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;531&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quo
 t;&gt;532&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; serialiser &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;533&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;164&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;534&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;318&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;
 /span&gt; &lt;span class=&quot;s&quot;&gt;&quot;serializer&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;535&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;10&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;serializer&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;536&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;10&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;
 k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;537&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;10&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;=&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;538&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;8&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;539&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;8&lt;/td&gt;&lt;td class=&quot;source
 &quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;{&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;540&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;patternMap &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;541&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span
  class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;542&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; id &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;543&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; id&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;getter&quot;&lt;/span&gt;&lt;span class=&quot;k&qu
 ot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;544&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;getter&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;545&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;546&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;else&lt
 ;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; id&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;inherit&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;547&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;inherit&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;548&lt;/td&g
 t;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        identifiers&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;549&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;550&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;id&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=
 &quot;line&quot;&gt;551&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;id&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;552&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        identifiers&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;553&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&
 lt;tr&gt;&lt;td class=&quot;line&quot;&gt;554&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;555&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;556&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;557&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot
 ;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;558&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;5&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;}&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated serializer pattern map&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;559&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&
 quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;560&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;[&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;561&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;patternList &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr 
 class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;562&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;563&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; id &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;564&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;id &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; id&l
 t;span class=&quot;k&quot;&gt;.&lt;/span&gt;value &lt;span class=&quot;k&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;getter&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;565&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;getter&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;566&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt;
  &lt;td class=&quot;line&quot;&gt;567&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;id&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;568&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;id&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;569&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td cl
 ass=&quot;source&quot;&gt;                        identifiers&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;570&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;571&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;572&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;names &lt;span class=&quot;k&quot;&
 gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;573&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;574&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;575&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;]&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/
 span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated serializer pattern list&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;576&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;577&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;578&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; cons
 ume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Invalid serializer&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;579&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;580&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt;
  &lt;td class=&quot;line&quot;&gt;581&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;8&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;582&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;8&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated serializer&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;583&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;8&lt;/td&gt;&lt;td class=&quot
 ;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;584&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;585&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;l
 ine&quot;&gt;586&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;c&quot;&gt;// noop, just parsing&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;587&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;588&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;589&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; return_type&lt;span class
 =&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;590&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;591&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;operation &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; operation_rest&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;592&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;593&lt;/td&gt;&lt;td class=&quot;hits&quo
 t;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;594&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;595&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;596&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; interface_ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;isPartial
 &lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;597&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;144&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;598&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;210&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;interface&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;
 &gt; &lt;td class=&quot;line&quot;&gt;599&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;600&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for interface&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;601&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&qu
 ot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;602&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;interface&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;603&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;604&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span
 &gt;   partial&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;605&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   members&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;606&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;607&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;155&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;isParti
 al&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;inheritance &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; inheritance&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;608&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;609&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;{&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt
 ;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Bodyless interface&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;610&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;611&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;251&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quo
 t;line&quot;&gt;612&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;251&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;}&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;613&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;614&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER
 &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Missing semicolon after interface&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;615&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;78&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;616&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&
 gt;617&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;173&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ea &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; extended_attrs&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;618&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;173&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;619&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;173&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; cnt &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; const_&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;620&lt;/td&gt;&lt;td clas
 s=&quot;hits&quot;&gt;173&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;cnt&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;621&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    cnt&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;extAttrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; ea&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;622&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;members&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;cnt&lt;span
  class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;623&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;624&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;625&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;164&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; mem &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; serialiser&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; attribute&lt;span class=&quot;k
 &quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; operation&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unknown member&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;626&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;164&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                mem&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;extAttrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; ea&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;627&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;164&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;members&lt;span class=&quot;k&quot;&gt;.&lt;/sp
 an&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;mem&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;628&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;629&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;630&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;631&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; partial &lt
 ;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;632&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;66&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;633&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;130&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;partial&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;634&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; thing &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; dictionary&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; interface_&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Partial doesn't apply to anything&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class
 =&quot;line&quot;&gt;635&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            thing&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;partial &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;636&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; thing&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;637&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;638&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&l
 t;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;639&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; dictionary &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;isPartial&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;640&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;66&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;641&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;128&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            
 &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;dictionary&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;642&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;643&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/
 span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for dictionary&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;644&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;645&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;dictionary&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;646&lt;/td&gt;&l
 t;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;647&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   partial&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;648&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   members&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;649&lt;/td&gt;&lt;td class=&quot;hits
 &quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;650&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;isPartial&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;inheritance &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; inheritance&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;651&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;
             all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;652&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;{&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Bodyless dictionary&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;653&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class
 =&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;654&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;13&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;655&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;13&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;}&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td clas
 s=&quot;line&quot;&gt;656&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;657&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Missing semicolon after dictionary&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;658&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td clas
 s=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;659&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;660&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ea &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; extended_attrs&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;661&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt
 ;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;662&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; typ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No type for dictionary member&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;663&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;664&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;  
               &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for dictionary member&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;665&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;members&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;666&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quo
 t;&gt;                    type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;s&quot;&gt;&quot;field&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;667&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;668&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   idlType&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    typ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;669&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   extAttrs&lt
 ;span class=&quot;k&quot;&gt;:&lt;/span&gt;   ea&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;670&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;default&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;  default_&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;671&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;672&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot
 ;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;673&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated dictionary member&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;674&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;675&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class
 =&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;676&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;677&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; exception &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;678&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;61&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;
 td class=&quot;line&quot;&gt;679&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;113&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;exception&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;680&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;681&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span c
 lass=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for exception&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;682&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;683&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span clas
 s=&quot;s&quot;&gt;&quot;exception&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;684&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;685&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   members&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;686&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr cla
 ss=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;687&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;inheritance &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; inheritance&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;688&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;689&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&qu
 ot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;{&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Bodyless exception&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;690&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;691&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;16&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span cl
 ass=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;692&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;16&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;}&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;693&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;694&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td 
 class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Missing semicolon after exception&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;695&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;9&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;696&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quo
 t;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;697&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ea &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; extended_attrs&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;698&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;699&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; cnt &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; const_&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt
 ;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;700&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;7&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;cnt&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;701&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    cnt&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;extAttrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; ea&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;702&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;members&lt;span c
 lass=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;cnt&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;703&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;704&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;705&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; typ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/t
 r&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;706&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;707&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;708&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;709&lt;/t
 d&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;typ &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;!&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unknown member in exception body&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;710&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    
 ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;members&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;711&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                        type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       &lt;span class=&quot;s&quot;&gt;&quot;field&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;712&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;       name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;713&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt; 
                    &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   idlType&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;    typ&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;714&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   extAttrs&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   ea&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;715&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;716&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;717&lt;/td&gt;&lt;td class=
 &quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;718&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;719&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;720&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; enum_ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&
 gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;721&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;52&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;722&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;103&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;enum&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;723&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td cla
 ss=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;724&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name for enum&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;725&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&
 gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;726&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;enum&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;727&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   name&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;728&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   values&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[]&lt;/span&gt;&lt;/td&gt;&l
 t;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;729&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;730&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;731&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;{&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&
 gt;&lt;span class=&quot;s&quot;&gt;&quot;No curly for enum&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;732&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; saw_comma &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;733&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit
 &quot;&gt; &lt;td class=&quot;line&quot;&gt;734&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;735&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;4&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;}&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;736&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;
 ();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;737&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;saw_comma&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Trailing comma in enum&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;738&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/s
 pan&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No semicolon after enum&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;739&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;740&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;741&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; val &lt;span class=&quot;k&quot;&gt;=&lt;
 /span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;STR&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unexpected value in enum&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;742&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;values&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;val&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;replace&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;/&quot;/g&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&
 gt;&lt;span class=&quot;k&quot;&gt;));&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;743&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;744&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;,&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;745&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&g
 t;&lt;td class=&quot;source&quot;&gt;                    all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;746&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;2&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    saw_comma &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;747&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;748&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;h
 it&quot;&gt; &lt;td class=&quot;line&quot;&gt;749&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    saw_comma &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;750&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;751&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;752&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt
 ;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;753&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;754&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; typedef &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;755&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;51&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;756&lt;/td&gt;&lt;td class=&quot;hits&quo
 t;&gt;99&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;typedef&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;757&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;758&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                type&lt;spa
 n class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;typedef&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;759&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;760&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;761&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;extAttrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; extended_attrs&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&g
 t;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;762&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;763&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;idlType &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; type&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No type in typedef&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;764&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_
 ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;765&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No name in typedef&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;766&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            ret&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;name &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; name&lt;span class=&quot;k&quot;&g
 t;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;767&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;768&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unterminated typedef&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; 
 &lt;td class=&quot;line&quot;&gt;769&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;3&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;770&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;771&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;772&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; implements_ &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;fu
 nction&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;773&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;48&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;774&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;48&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; target &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;775&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;95&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/
 span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;target&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;776&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; w &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;777&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;implements&quot;&
 lt;/span&gt;&lt;span class=&quot;k&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;778&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ret &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;779&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    type&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt;   &lt;span class=&quot;s&quot;&gt;&quot;implements&quot;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;780&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   target&lt;span class=&quot
 ;k&quot;&gt;:&lt;/span&gt; target&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;781&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;782&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;783&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; imp &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ID&lt;span class=&quot;k&quot;&gt;)&lt;/span
 &gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Incomplete implements statement&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;784&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                ret&lt;span class=&quot;k&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;implements&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; imp&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;value&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;785&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                all_ws&lt;span class=&quot;k&quot;&gt;();&lt;/span&g
 t;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;786&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                consume&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;OTHER&lt;span class=&quot;k&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;;&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;No terminating ; for implements statement&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;787&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; ret&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class
 =&quot;line&quot;&gt;788&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;789&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;790&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;c&quot;&gt;// rollback&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;791&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;unshift&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;w&lt;span class=&quot;k&q
 uot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;792&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;unshift&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;target&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;793&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;794&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;795&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;s
 ource&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;796&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; definition &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;797&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;144&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt;  callback&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;      &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;798&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;             
        interface_&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;799&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    partial&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;       &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;800&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    dictionary&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;    &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;801&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    exception&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;     &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&l
 t;tr&gt;&lt;td class=&quot;line&quot;&gt;802&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    enum_&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;         &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;803&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    typedef&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;       &lt;span class=&quot;k&quot;&gt;||&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;804&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    implements_&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;805&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;;&l
 t;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;806&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;807&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;808&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; definitions &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;809&lt;/td&gt;&lt;td class=
 &quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;810&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; defs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;[];&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;811&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;k&quot
 ;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;812&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;144&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; ea &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; extended_attrs&lt;span class=&quot;k&quot;&gt;()&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;813&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;,&lt;/span&gt;   def &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; definition&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;814&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;144&lt;/t
 d&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(!&lt;/span&gt;def&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;815&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;ea&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Stray extended attributes&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;816&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;sourc
 e&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;817&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;818&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;97&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                def&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;extAttrs &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; ea&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;819&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;97&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;                defs&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;push&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt
 ;def&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;820&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;821&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; defs&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;822&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;823&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&q
 uot;&gt;        &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; res &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; definitions&lt;span class=&quot;k&quot;&gt;();&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;824&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; error&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Unrecognised tokens&quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;825&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; res&lt;span cla
 ss=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;826&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;827&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;828&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; obj &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;829&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        parse&lt;span class=&quot;k&quot;&gt;:&lt;/span&gt; 
  &lt;span class=&quot;k&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;830&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;var&lt;/span&gt; tokens &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; tokenise&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;str&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;831&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;            &lt;span class=&quot;c&quot;&gt;// console.log(tokens);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;832&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;47&lt;/td&gt;&lt;td class
 =&quot;source&quot;&gt;            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; parse&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;tokens&lt;span class=&quot;k&quot;&gt;);&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;833&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;834&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;835&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;typeof&lt;/span&gt; module &
 lt;span class=&quot;k&quot;&gt;!==&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;undefined&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; module&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;exports&lt;span class=&quot;k&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;hit&quot;&gt; &lt;td class=&quot;line&quot;&gt;836&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;1&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        module&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;exports &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; obj&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;837&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;838&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;
 &lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;{&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;miss&quot;&gt; &lt;td class=&quot;line&quot;&gt;839&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;0&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;        window&lt;span class=&quot;k&quot;&gt;.&lt;/span&gt;WebIDL2 &lt;span class=&quot;k&quot;&gt;=&lt;/span&gt; obj&lt;span class=&quot;k&quot;&gt;;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;840&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;    &lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;line&quot;&gt;841&lt;/td&gt;&lt;td class=&quot;hits&quot;&gt;&lt;/td&gt;&lt;td class=&quot;source&quot;&gt;&lt;span class=&quot;k&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;());&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/ta
 ble&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2indexjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/index.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/index.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/index.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+module.exports = require(&quot;./lib/webidl2.js&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2libw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/lib/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/lib/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/lib/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</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/resources/webidl2/lib/webidl2.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/lib/writer.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2packagejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/package.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/package.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/package.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+{
+  &quot;name&quot;: &quot;webidl2&quot;,
+  &quot;description&quot;: &quot;A WebIDL Parser&quot;,
+  &quot;version&quot;: &quot;2.0.11&quot;,
+  &quot;author&quot;: &quot;Robin Berjon &lt;robin@berjon.com&gt;&quot;,
+  &quot;license&quot;: &quot;MIT&quot;,
+  &quot;dependencies&quot;: {},
+  &quot;devDependencies&quot;: {
+    &quot;mocha&quot;: &quot;2.2.5&quot;,
+    &quot;expect.js&quot;: &quot;0.3.1&quot;,
+    &quot;underscore&quot;: &quot;1.8.3&quot;,
+    &quot;jsondiffpatch&quot;: &quot;0.1.31&quot;,
+    &quot;benchmark&quot;: &quot;*&quot;,
+    &quot;microtime&quot;: &quot;1.4.2&quot;
+  },
+  &quot;scripts&quot;: {
+    &quot;test&quot;: &quot;mocha&quot;
+  },
+  &quot;repository&quot;: &quot;git://github.com/darobin/webidl2.js&quot;,
+  &quot;main&quot;: &quot;index&quot;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididldictrequireddefaultwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/dict-required-default.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/dict-required-default.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/dict-required-default.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// https://heycam.github.io/webidl/#required-dictionary-member
+// &quot;A required dictionary member must not have a default value.&quot;
+dictionary Dict {
+  required long member = 0;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlenumwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+enum foo { 1, 2, 3};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlmaplike1typewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface MapLikeOneType {
+        maplike&lt;long&gt;;
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlmodulewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/module.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/module.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/module.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+module gfx {
+
+  module geom {
+    interface Shape { /* ... */ };
+    interface Rectangle : Shape { /* ... */ };
+    interface Path : Shape { /* ... */ };
+  };
+
+  interface GraphicsContext {
+    void fillShape(geom::Shape s);
+    void strokeShape(geom::Shape s);
+  };
+};
+
+module gui {
+
+  interface Widget { /* ... */  };
+
+  interface Window : Widget {
+    gfx::GraphicsContext getGraphicsContext();
+  };
+
+  interface Button : Widget { /* ... */  };
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlnonnullableanywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface NonNullable {
+  attribute any? foo;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlnonnullableobjectswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+interface Foo {};
+
+interface NonNullable {
+  attribute Foo?? foo;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlraiseswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+// getraises and setraises are not longer valid Web IDL
+interface Person {
+
+  // An attribute that can raise an exception if it is set to an invalid value.
+  attribute DOMString name setraises (InvalidName);
+
+  // An attribute whose value cannot be assigned to, and which can raise an
+  // exception some circumstances.
+  readonly attribute DOMString petName getraises (NoSuchPet);
+};
+
+exception SomeException {
+};
+
+interface ExceptionThrower {
+  // This attribute always throws a SomeException and never returns a value.
+  attribute long valueOf getraises(SomeException);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlreadonlyiterablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface ReadonlyIterable {
+        readonly iterable&lt;long&gt;;
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlscopednamewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+// scoped names are no longer valid in WebIDL
+  typedef gfx::geom::geom2d::Point Point;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlsequenceAsAttributewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface sequenceAsAttribute {
+  attribute sequence&lt;short&gt; invalid;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlsetlike2typeswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface SetLikeTwoTypes {
+        setlike&lt;long, long&gt;;
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlspecialomittablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+// omittable is no longer a recognized keywoard as of 20110905
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  omittable getter float getProperty(DOMString propertyName);
+  omittable setter void setProperty(DOMString propertyName, float propertyValue);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlstringconstantsidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface Util {
+  const DOMString hello = &quot;world&quot;;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididltypedefnestedwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+
+      interface Point {
+        attribute float x;
+        attribute float y;
+      };
+
+
+      interface Rect {
+        attribute Point topleft;
+        attribute Point bottomright;
+      };
+
+  interface Widget {
+    typedef sequence&lt;Point&gt; PointSequence;
+
+    readonly attribute Rect bounds;
+
+    boolean pointWithinBounds(Point p);
+    boolean allPointsWithinBounds(PointSequence ps);
+  };
+
+  typedef [Clamp] octet value; 
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalididlw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,31 @@
</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/resources/webidl2/test/invalid/idl/dict-required-default.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/enum.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/maplike-1type.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/module.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableany.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/nonnullableobjects.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/raises.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/readonly-iterable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/scopedname.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/sequenceAsAttribute.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/setlike-2types.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/special-omittable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/stringconstants.idl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/idl/typedef-nested.widl
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsondictrequireddefaultjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/dict-required-default.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/dict-required-default.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/dict-required-default.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Required member must not have a default&quot;
+,   &quot;line&quot;:     4
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonenumjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/enum.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/enum.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/enum.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Unexpected value in enum&quot;
+,   &quot;line&quot;:     1
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonmaplike1typejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;: &quot;Missing second type argument in maplike declaration&quot;,
+    &quot;line&quot;: 2
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonmodulejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/module.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/module.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/module.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Unrecognised tokens&quot;
+,   &quot;line&quot;:     2
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonnonnullableanyjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Type any cannot be made nullable&quot;
+,   &quot;line&quot;:     2
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonnonnullableobjectsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Can't nullable more than once&quot;
+,   &quot;line&quot;:     4
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonraisesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/raises.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/raises.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/raises.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Unterminated attribute&quot;
+,   &quot;line&quot;:     5
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonreadonlyiterablejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;: &quot;Invalid operation&quot;,
+    &quot;line&quot;: 2
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonscopednamejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;No name in typedef&quot;
+,   &quot;line&quot;:     2
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonsequenceAsAttributejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Attributes cannot accept sequence types&quot;
+,   &quot;line&quot;:     2
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonsetlike2typesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;: &quot;Unterminated setlike declaration&quot;,
+    &quot;line&quot;: 2
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonspecialomittablejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Invalid operation&quot;
+,   &quot;line&quot;:     6
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonstringconstantsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;No value for const&quot;
+,   &quot;line&quot;:     2
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsontypedefnestedjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+{
+    &quot;message&quot;:  &quot;Invalid operation&quot;
+,   &quot;line&quot;:     14
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjsonw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,31 @@
</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/resources/webidl2/test/invalid/json/dict-required-default.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/enum.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/maplike-1type.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/module.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableany.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/nonnullableobjects.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/raises.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/readonly-iterable.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/scopedname.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/sequenceAsAttribute.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/setlike-2types.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/special-omittable.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/stringconstants.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid/json/typedef-nested.json
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testinvalidjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/invalid.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+
+// NOTES:
+//  - the errors actually still need to be reviewed to check that they
+//    are fully correct interpretations of the IDLs
+
+var wp = process.env.JSCOV ? require(&quot;../lib-cov/webidl2&quot;) : require(&quot;../lib/webidl2&quot;)
+,   expect = require(&quot;expect.js&quot;)
+,   pth = require(&quot;path&quot;)
+,   fs = require(&quot;fs&quot;)
+;
+describe(&quot;Parses all of the invalid IDLs to check that they blow up correctly&quot;, function () {
+    var dir = pth.join(__dirname, &quot;invalid/idl&quot;)
+    ,   skip = {}
+    ,   idls = fs.readdirSync(dir)
+                  .filter(function (it) { return (/\.w?idl$/).test(it) &amp;&amp; !skip[it]; })
+                  .map(function (it) { return pth.join(dir, it); })
+    ,   errors = idls.map(function (it) { return pth.join(__dirname, &quot;invalid&quot;, &quot;json&quot;, pth.basename(it).replace(/\.w?idl/, &quot;.json&quot;)); })
+    ;
+    
+    for (var i = 0, n = idls.length; i &lt; n; i++) {
+        var idl = idls[i], error = JSON.parse(fs.readFileSync(errors[i], &quot;utf8&quot;));
+        var func = (function (idl, err) {
+            return function () {
+                var error;
+                try {
+                    var ast = wp.parse(fs.readFileSync(idl, &quot;utf8&quot;));
+                    console.log(JSON.stringify(ast, null, 4));
+                }
+                catch (e) {
+                    error = e;
+                }
+                finally {
+                    expect(error).to.be.ok();
+                    expect(error.message).to.equal(err.message);
+                    expect(error.line).to.equal(err.line);
+                }
+                
+            };
+        }(idl, error));
+        it(&quot;should produce the right error for &quot; + idl, func);
+    }
+});
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testmochaopts"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/mocha.opts (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/mocha.opts                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/mocha.opts        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+--reporter spec
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlallowanywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/allowany.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/allowany.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/allowany.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface B {
+  void g();
+  void g(B b);
+  void g([AllowAny] DOMString s);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlarraywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/array.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/array.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/array.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor]
+interface LotteryResults {
+  readonly attribute unsigned short[][] numbers;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlattributeswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+exception InvalidName {
+  DOMString reason;
+};
+
+exception NoSuchPet { };
+
+interface Person {
+
+  // A simple attribute that can be set to any value the range an unsigned
+  // short can take.
+  attribute unsigned short age;
+
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlcallbackwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+callback AsyncOperationCallback = void (DOMString status);
+
+callback interface EventHandler {
+  void eventOccurred(DOMString details);
+};
+
+callback SortCallback = boolean (any a, any b);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlcallerwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface NumberQuadrupler {
+  // This operation simply returns four times the given number x.
+  legacycaller float compute(float x);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlconstantswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Util {
+  const boolean DEBUG = false;
+  const short negative = -1;
+  const octet LF = 10;
+  const unsigned long BIT_MASK = 0x0000fc00;
+  const float AVOGADRO = 6.022e23;
+  const unrestricted float sobig = Infinity;
+  const unrestricted double minusonedividedbyzero = -Infinity;
+  const short notanumber = NaN;
+};
+
+exception Error {
+  const short ERR_UNKNOWN = 0;
+  const short ERR_OUT_OF_MEMORY = 1;
+
+  short errorCode;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlconstructorwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor,
+ Constructor(float radius)]
+interface Circle {
+  attribute float r;
+  attribute float cx;
+  attribute float cy;
+  readonly attribute float circumference;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldictionaryinheritswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+dictionary PaintOptions {
+  DOMString? fillPattern = &quot;black&quot;;
+  DOMString? strokePattern = null;
+  Point position;
+};
+
+dictionary WetPaintOptions : PaintOptions {
+  float hydrometry;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldictionarywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+// Extracted from Web IDL editors draft May 31 2011
+dictionary PaintOptions {
+  DOMString? fillPattern = &quot;black&quot;;
+  DOMString? strokePattern = null;
+  Point position;
+  // https://heycam.github.io/webidl/#dfn-optional-argument-default-value allows sequences to default to &quot;[]&quot;.
+  sequence&lt;long&gt; seq = [];
+  // https://heycam.github.io/webidl/#required-dictionary-member
+  required long reqSeq;
+};
+
+partial dictionary A {
+  long h;
+  long d;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldocumentationdoswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/**
+* \brief Testing documentation features
+*
+* This is a
+* single paragraph
+*
+* &lt;p&gt;This is valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;em&gt;valid&lt;/em&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;b&gt;valid&lt;/b&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;a href=''&gt;valid&lt;/a&gt;.&lt;/p&gt;
+* &lt;ul&gt;
+* &lt;li&gt;This&lt;/li&gt;
+* &lt;li&gt;is&lt;/li&gt;
+* &lt;li&gt;valid&lt;/li&gt;
+* &lt;/ul&gt;
+* &lt;dl&gt;
+* &lt;dt&gt;This&lt;/dt&gt;
+* &lt;dd&gt;valid&lt;/dd&gt;
+* &lt;/dl&gt;
+* &lt;table&gt;
+* &lt;tr&gt;
+* &lt;td&gt;this&lt;/td&gt;
+* &lt;td&gt;is&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;tr&gt;
+* &lt;td&gt;valid&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;/table&gt;
+* &lt;p&gt;This is &lt;br&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br /&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br/&gt; valid.&lt;/p&gt;
+*/
+interface Documentation {};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidldocumentationwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/**
+* \brief Testing documentation features
+*
+* This is a
+* single paragraph
+*
+* &lt;p&gt;This is valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;em&gt;valid&lt;/em&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;b&gt;valid&lt;/b&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;a href=''&gt;valid&lt;/a&gt;.&lt;/p&gt;
+* &lt;ul&gt;
+* &lt;li&gt;This&lt;/li&gt;
+* &lt;li&gt;is&lt;/li&gt;
+* &lt;li&gt;valid&lt;/li&gt;
+* &lt;/ul&gt;
+* &lt;dl&gt;
+* &lt;dt&gt;This&lt;/dt&gt;
+* &lt;dd&gt;valid&lt;/dd&gt;
+* &lt;/dl&gt;
+* &lt;table&gt;
+* &lt;tr&gt;
+* &lt;td&gt;this&lt;/td&gt;
+* &lt;td&gt;is&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;tr&gt;
+* &lt;td&gt;valid&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;/table&gt;
+* &lt;p&gt;This is &lt;br&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br /&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br/&gt; valid.&lt;/p&gt;
+* &lt;p&gt;&lt;img src=&quot;foo.png&quot; alt=&quot;Valid&quot;/&gt;&lt;/p&gt;
+*/
+interface Documentation {};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlenumwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+enum MealType { &quot;rice&quot;, &quot;noodles&quot;, &quot;other&quot; };
+
+interface Meal {
+  attribute MealType type;
+  attribute float size;     // in grams
+
+  void initialize(MealType type, float size);
+};
+
+enum AltMealType { &quot;rice&quot;, &quot;noodles&quot;, &quot;other&quot;, };
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlequivalentdeclwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float getProperty(DOMString propertyName);
+  setter void setProperty(DOMString propertyName, float propertyValue);
+};
+
+
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  float getProperty(DOMString propertyName);
+  void setProperty(DOMString propertyName, float propertyValue);
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlexceptioninheritancewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// from http://lists.w3.org/Archives/Public/public-script-coord/2010OctDec/0112.html
+  exception DOMException {
+    unsigned short code;
+  };
+
+  exception HierarchyRequestError : DOMException { };
+  exception NoModificationAllowedError : DOMException { };
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlexceptionwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dahut {
+  attribute DOMString type;
+};
+
+exception SomeException {
+};
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlextendedattributeswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://www.w3.org/TR/2015/WD-service-workers-20150205/
+
+[Global=(Worker,ServiceWorker), Exposed=ServiceWorker]
+interface ServiceWorkerGlobalScope : WorkerGlobalScope {
+  
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlgenericwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+interface Foo {
+  Promise&lt;ResponsePromise&lt;sequence&lt;DOMString?&gt;&gt;&gt; bar();
+  readonly attribute Promise&lt;DOMString&gt;[] baz;
+};
+
+// Extracted from https://slightlyoff.github.io/ServiceWorker/spec/service_worker/ on 2014-05-08
+
+interface ServiceWorkerClients {
+  Promise&lt;Client[]?&gt; getServiced();
+  Promise&lt;any&gt; reloadAll();
+};
+
+// Extracted from https://slightlyoff.github.io/ServiceWorker/spec/service_worker/ on 2014-05-13
+
+interface FetchEvent : Event {
+  ResponsePromise&lt;any&gt; default();
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlgettersetterwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlidentifierqualifiednameswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+  // Typedef identifier: &quot;number&quot;
+  // Qualified name:    &quot;::framework::number&quot;
+  typedef float number;
+
+  // Exception identifier: &quot;FrameworkException&quot;
+  // Qualified name:       &quot;::framework::FrameworkException&quot;
+  exception FrameworkException {
+
+    // Constant identifier: &quot;ERR_NOT_FOUND&quot;
+    // Qualified name:      &quot;::framework::FrameworkException::ERR_NOT_FOUND&quot;
+    const long ERR_NOT_FOUND = 1;
+
+    // Exception field identifier: &quot;code&quot;
+    long code;
+  };
+
+  // Interface identifier: &quot;System&quot;
+  // Qualified name:       &quot;::framework::System&quot;
+  interface System {
+
+    // Operation identifier:          &quot;createObject&quot;
+    // Operation argument identifier: &quot;interface&quot;
+    object createObject(DOMString _interface);
+
+    // Operation has no identifier; it declares a getter.
+    getter DOMString (DOMString keyName);
+  };
+
+    
+    // Interface identifier: &quot;TextField&quot;
+    // Qualified name:       &quot;::framework::gui::TextField&quot;
+    interface TextField {
+
+      // Attribute identifier: &quot;const&quot;
+      attribute boolean _const;
+
+      // Attribute identifier: &quot;value&quot;
+      attribute DOMString? _value;
+    };
+
+interface Foo {
+ void op(object interface);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlimplementswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+  interface Node {
+    readonly attribute unsigned short nodeType;
+    // ...
+  };
+
+  interface EventTarget {
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          boolean useCapture);
+    // ...
+  };
+
+  Node implements EventTarget;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlindexedpropertieswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface OrderedMap {
+  readonly attribute unsigned long size;
+
+  getter any getByIndex(unsigned long index);
+  setter void setByIndex(unsigned long index, any value);
+  deleter void removeByIndex(unsigned long index);
+
+  getter any get(DOMString name);
+  setter creator void set(DOMString name, any value);
+  deleter void remove(DOMString name);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlinheritsgetterwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+interface Animal {
+
+  // A simple attribute that can be set to any string value.
+  readonly attribute DOMString name;
+};
+
+interface Person : Animal {
+
+  // An attribute whose value cannot be assigned to.
+  readonly attribute unsigned short age;
+
+  // An attribute that can raise an exception if it is set to an invalid value.
+  // Its getter behavior is inherited from Animal, and need not be specified
+  // the description of Person.
+  inherit attribute DOMString name;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlinterfaceinheritswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Animal {
+  attribute DOMString name;
+};
+
+interface Human : Animal {
+  attribute Dog pet;
+};
+
+interface Dog : Animal {
+  attribute Human owner;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidliterablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+interface IterableOne {
+        iterable&lt;long&gt;;
+};
+
+interface IterableTwo {
+        iterable&lt;short, double?&gt;;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidliteratorwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+interface SessionManager {
+  Session getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  Session iterator;
+};
+
+interface Session {
+  readonly attribute DOMString username;
+  // ...
+};
+
+interface SessionManager2 {
+  Session2 getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  Session2 iterator = SessionIterator;
+};
+
+interface Session2 {
+  readonly attribute DOMString username;
+  // ...
+};
+
+interface SessionIterator {
+  readonly attribute unsigned long remainingSessions;
+};
+
+     interface NodeList {
+       Node iterator = NodeIterator;
+     };
+
+     interface NodeIterator {
+       Node iterator object;
+     };
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidllegacyiterablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface LegacyIterable {
+        legacyiterable&lt;long&gt;;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlmapwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/map.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/map.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/map.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from https://slightlyoff.github.io/ServiceWorker/spec/service_worker/ on 2014-05-06
+
+[MapClass(DOMString, DOMString)]
+interface HeaderMap {
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlmaplikewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+interface MapLike {
+        maplike&lt;long, float&gt;;
+};
+
+interface ReadOnlyMapLike {
+        readonly maplike&lt;long, float&gt;;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnamedconstructorwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[NamedConstructor=Audio,
+ NamedConstructor=Audio(DOMString src)]
+interface HTMLAudioElement : HTMLMediaElement {
+  // ...
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnointerfaceobjectwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[NoInterfaceObject]
+interface Query {
+  any lookupEntry(unsigned long key);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnullablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface MyConstants {
+  const boolean? ARE_WE_THERE_YET = false;
+};
+
+interface Node {
+  readonly attribute DOMString? namespaceURI;
+  // ...
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlnullableobjectswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+// Extracted from WebIDL spec 2011-05-23
+
+interface A {
+  // ...
+};
+interface B {
+  // ...
+};
+interface C {
+  void f(A? x);
+  void f(B? x);
+
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidloperationoptionalargwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface ColorCreator {
+  object createColor(float v1, float v2, float v3, optional float alpha = 3.5);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidloverloadingwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface A {
+  // ...
+};
+
+interface B {
+  // ...
+};
+
+interface C {
+  void f(A x);
+  void f(B x);
+};
+
+interface A {
+  /* f1 */ void f(DOMString a);
+  /* f2 */ void f([AllowAny] DOMString a, DOMString b, float... c);
+  /* f3 */ void f();
+  /* f4 */ void f(long a, DOMString b, optional DOMString c, float... d);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidloverridebuiltinswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[OverrideBuiltins]
+interface StringMap2 {
+  readonly attribute unsigned long length;
+  getter DOMString lookup(DOMString key);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlpartialinterfacewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+interface Foo {
+  attribute DOMString bar;
+};
+
+partial interface Foo {
+  attribute DOMString quux;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlprimitiveswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+interface Primitives {
+  attribute boolean truth;
+  attribute byte character;
+  attribute octet value;
+  attribute short number;
+  attribute unsigned short positive;
+  attribute long big;
+  attribute unsigned long bigpositive;
+  attribute long long bigbig;
+  attribute  unsigned long long bigbigpositive;
+  attribute float real;
+  attribute double bigreal; 
+  attribute unrestricted float realwithinfinity;
+  attribute unrestricted double bigrealwithinfinity; 
+  attribute DOMString string; 
+  attribute ByteString bytes; 
+  attribute Date date;
+  attribute RegExp regexp;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlprototyperootwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[PrototypeRoot]
+interface Node {
+  readonly attribute unsigned short nodeType;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlputforwardswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Person {
+  [PutForwards=full] readonly attribute Name name;
+  attribute unsigned short age;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlregoperationswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dimensions {
+  attribute unsigned long width;
+  attribute unsigned long height;
+};
+
+exception NoPointerDevice { };
+
+interface Button {
+
+  // An operation that takes no arguments, returns a boolean
+  boolean isMouseOver();
+
+  // Overloaded operations.
+  void setDimensions(Dimensions size);
+  void setDimensions(unsigned long width, unsigned long height);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlreplaceablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Counter {
+  [Replaceable] readonly attribute unsigned long value;
+  void increment();
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlsequencewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+// edited to remove sequence as attributes, now invalid
+interface Canvas {
+  void drawPolygon(sequence&lt;float&gt; coordinates);
+  sequence&lt;float&gt; getInflectionPoints();
+  // ...
+};
+
+// Make sure sequence can still be registered as a type.
+interface Foo {
+  sequence bar();
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlserializerwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+interface Transaction {
+  readonly attribute Account from;
+  readonly attribute Account to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer;
+};
+
+interface Account {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer DOMString serialize();
+};
+
+interface Transaction2 {
+  readonly attribute Account2 from;
+  readonly attribute Account2 to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer = { from, to, amount, description };
+};
+
+interface Account2 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = number;
+};
+
+interface Account3 {
+  attribute DOMString name;
+  attribute unsigned long number;
+
+  serializer = { attribute };
+};
+
+interface Account4 {
+  getter object getItem(unsigned long index);
+  serializer = { getter };
+};
+
+interface Account5 : Account {
+  attribute DOMString secondname;
+  serializer = { inherit, secondname };
+};
+
+interface Account6 : Account {
+  attribute DOMString secondname;
+  serializer = { inherit, attribute };
+};
+
+interface Account7 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = [ name, number ];
+};
+
+interface Account8 {
+  getter object getItem(unsigned long index);
+  serializer = [ getter ];
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlsetlikewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+interface SetLike {
+        setlike&lt;long&gt;;
+};
+
+interface ReadOnlySetLike {
+        readonly setlike&lt;long&gt;;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstaticwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/static.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/static.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/static.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Point { /* ... */ };
+
+interface Circle {
+  attribute float cx;
+  attribute float cy;
+  attribute float radius;
+
+  static readonly attribute long triangulationCount;
+  static Point triangulate(Circle c1, Circle c2, Circle c3);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstringifierattributewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor]
+interface Student {
+  attribute unsigned long id;
+  stringifier attribute DOMString name;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstringifiercustomwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor]
+interface Student {
+  attribute unsigned long id;
+  attribute DOMString? familyName;
+  attribute DOMString givenName;
+
+  stringifier DOMString ();
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlstringifierwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface A {
+  stringifier DOMString ();
+};
+
+interface A {
+  stringifier;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltreatasnullwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dog {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatNullAs=EmptyString] DOMString breedName);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltreatasundefinedwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Cat {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatUndefinedAs=EmptyString] DOMString breedName);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltypedefnestedwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+
+      interface Point {
+        attribute float x;
+        attribute float y;
+      };
+
+
+      interface Rect {
+        attribute Point topleft;
+        attribute Point bottomright;
+      };
+
+  interface Widget {
+    typedef sequence&lt;Point&gt; PointSequence;
+
+    readonly attribute Rect bounds;
+
+    boolean pointWithinBounds(Point p);
+    boolean allPointsWithinBounds(PointSequence ps);
+  };
+
+  typedef [Clamp] octet value; 
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltypedefwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+      interface Point {
+        attribute float x;
+        attribute float y;
+      };
+
+      typedef sequence&lt;Point&gt; PointSequence;
+
+      interface Rect {
+        attribute Point topleft;
+        attribute Point bottomright;
+      };
+
+  interface Widget {
+
+    readonly attribute Rect bounds;
+
+    boolean pointWithinBounds(Point p);
+    boolean allPointsWithinBounds(PointSequence ps);
+  };
+
+  typedef [Clamp] octet value;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidltypesuffixeswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface Suffixes {
+  void test(sequence&lt;DOMString[]?&gt;? foo);
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidluniontypewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface Union {
+ attribute (float or (Date or Event) or (Node or DOMString)?) test;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlvariadicoperationswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface IntegerSet {
+  readonly attribute unsigned long cardinality;
+
+  void union(long... ints);
+  void intersection(long... ints);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxidlw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,72 @@
</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/resources/webidl2/test/syntax/idl/allowany.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/array.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/attributes.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/callback.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/caller.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constants.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/constructor.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary-inherits.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/dictionary.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation-dos.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/documentation.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/enum.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/equivalent-decl.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception-inheritance.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/exception.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/extended-attributes.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/generic.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/getter-setter.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/identifier-qualified-names.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/implements.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/indexed-properties.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/inherits-getter.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/interface-inherits.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/iterator.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/legacyiterable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/map.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/maplike.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/namedconstructor.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nointerfaceobject.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/nullableobjects.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/operation-optional-arg.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overloading.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/overridebuiltins.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/partial-interface.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/primitives.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/prototyperoot.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/putforwards.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/reg-operations.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/replaceable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/sequence.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/serializer.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/setlike.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/static.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-attribute.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier-custom.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/stringifier.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasnull.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/treatasundefined.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef-nested.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typedef.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/typesuffixes.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/uniontype.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/idl/variadic-operations.widl
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonallowanyjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/allowany.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/allowany.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/allowany.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,109 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;B&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;g&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;g&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;B&quot;
+                        },
+                        &quot;name&quot;: &quot;b&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;g&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [
+                            {
+                                &quot;name&quot;: &quot;AllowAny&quot;,
+                                &quot;arguments&quot;: null
+                            }
+                        ],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;s&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonarrayjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/array.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/array.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/array.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;LotteryResults&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: 2,
+                    &quot;nullableArray&quot;: [false, false],
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;numbers&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Constructor&quot;,
+                &quot;arguments&quot;: null
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonattributesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/attributes.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/attributes.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/attributes.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;InvalidName&quot;,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;reason&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;NoSuchPet&quot;,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Person&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;age&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoncallbackjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/callback.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/callback.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/callback.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,119 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;callback&quot;,
+        &quot;name&quot;: &quot;AsyncOperationCallback&quot;,
+        &quot;idlType&quot;: {
+            &quot;sequence&quot;: false,
+            &quot;generic&quot;: null,
+            &quot;nullable&quot;: false,
+            &quot;array&quot;: false,
+            &quot;union&quot;: false,
+            &quot;idlType&quot;: &quot;void&quot;
+        },
+        &quot;arguments&quot;: [
+            {
+                &quot;optional&quot;: false,
+                &quot;variadic&quot;: false,
+                &quot;extAttrs&quot;: [],
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;status&quot;
+            }
+        ],
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;callback interface&quot;,
+        &quot;name&quot;: &quot;EventHandler&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;eventOccurred&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;details&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;callback&quot;,
+        &quot;name&quot;: &quot;SortCallback&quot;,
+        &quot;idlType&quot;: {
+            &quot;sequence&quot;: false,
+            &quot;generic&quot;: null,
+            &quot;nullable&quot;: false,
+            &quot;array&quot;: false,
+            &quot;union&quot;: false,
+            &quot;idlType&quot;: &quot;boolean&quot;
+        },
+        &quot;arguments&quot;: [
+            {
+                &quot;optional&quot;: false,
+                &quot;variadic&quot;: false,
+                &quot;extAttrs&quot;: [],
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;any&quot;
+                },
+                &quot;name&quot;: &quot;a&quot;
+            },
+            {
+                &quot;optional&quot;: false,
+                &quot;variadic&quot;: false,
+                &quot;extAttrs&quot;: [],
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;any&quot;
+                },
+                &quot;name&quot;: &quot;b&quot;
+            }
+        ],
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoncallerjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/caller.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/caller.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/caller.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;NumberQuadrupler&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: true,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;compute&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;x&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonconstantsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constants.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constants.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constants.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,141 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Util&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;boolean&quot;,
+                &quot;name&quot;: &quot;DEBUG&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;boolean&quot;,
+                    &quot;value&quot;: false
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;short&quot;,
+                &quot;name&quot;: &quot;negative&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: -1
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;octet&quot;,
+                &quot;name&quot;: &quot;LF&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: 10
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;unsigned long&quot;,
+                &quot;name&quot;: &quot;BIT_MASK&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: 64512
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;float&quot;,
+                &quot;name&quot;: &quot;AVOGADRO&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: 6.022e+23
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;unrestricted float&quot;,
+                &quot;name&quot;: &quot;sobig&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;Infinity&quot;,
+                    &quot;negative&quot;: false
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;unrestricted double&quot;,
+                &quot;name&quot;: &quot;minusonedividedbyzero&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;Infinity&quot;,
+                    &quot;negative&quot;: true
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;short&quot;,
+                &quot;name&quot;: &quot;notanumber&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;NaN&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;Error&quot;,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;short&quot;,
+                &quot;name&quot;: &quot;ERR_UNKNOWN&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: 0
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;short&quot;,
+                &quot;name&quot;: &quot;ERR_OUT_OF_MEMORY&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: 1
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;errorCode&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;short&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonconstructorjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constructor.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constructor.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constructor.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Circle&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;r&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;cx&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;cy&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;circumference&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Constructor&quot;,
+                &quot;arguments&quot;: null
+            },
+            {
+                &quot;name&quot;: &quot;Constructor&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;radius&quot;
+                    }
+                ]
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondictionaryinheritsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;dictionary&quot;,
+        &quot;name&quot;: &quot;PaintOptions&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;fillPattern&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;extAttrs&quot;: [],
+                &quot;default&quot;: {
+                    &quot;type&quot;: &quot;string&quot;,
+                    &quot;value&quot;: &quot;black&quot;
+                }
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;strokePattern&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;extAttrs&quot;: [],
+                &quot;default&quot;: {
+                    &quot;type&quot;: &quot;null&quot;
+                }
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;position&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;dictionary&quot;,
+        &quot;name&quot;: &quot;WetPaintOptions&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;hydrometry&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;PaintOptions&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondictionaryjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,135 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;dictionary&quot;,
+        &quot;name&quot;: &quot;PaintOptions&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;fillPattern&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;extAttrs&quot;: [],
+                &quot;default&quot;: {
+                    &quot;type&quot;: &quot;string&quot;,
+                    &quot;value&quot;: &quot;black&quot;
+                }
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;strokePattern&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;extAttrs&quot;: [],
+                &quot;default&quot;: {
+                    &quot;type&quot;: &quot;null&quot;
+                }
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;position&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;seq&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: true,
+                    &quot;generic&quot;: &quot;sequence&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;long&quot;
+                    }
+                },
+                &quot;extAttrs&quot;: [],
+                &quot;default&quot;: {
+                    &quot;type&quot;: &quot;sequence&quot;,
+                    &quot;value&quot;: []
+                }
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;reqSeq&quot;,
+                &quot;required&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;dictionary&quot;,
+        &quot;name&quot;: &quot;A&quot;,
+        &quot;partial&quot;: true,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;h&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;d&quot;,
+                &quot;required&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondocumentationdosjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Documentation&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsondocumentationjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Documentation&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonenumjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/enum.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/enum.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/enum.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;enum&quot;,
+        &quot;name&quot;: &quot;MealType&quot;,
+        &quot;values&quot;: [
+            &quot;rice&quot;,
+            &quot;noodles&quot;,
+            &quot;other&quot;
+        ],
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Meal&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;MealType&quot;
+                },
+                &quot;name&quot;: &quot;type&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;size&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;initialize&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;MealType&quot;
+                        },
+                        &quot;name&quot;: &quot;type&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;size&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;enum&quot;,
+        &quot;name&quot;: &quot;AltMealType&quot;,
+        &quot;values&quot;: [
+            &quot;rice&quot;,
+            &quot;noodles&quot;,
+            &quot;other&quot;
+        ],
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonequivalentdecljson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,312 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dictionary&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;propertyCount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;getProperty&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: true,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;setProperty&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyValue&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dictionary&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;propertyCount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;getProperty&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;setProperty&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyValue&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: true,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyValue&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonexceptioninheritancejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;DOMException&quot;,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;code&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;HierarchyRequestError&quot;,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: &quot;DOMException&quot;,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;NoModificationAllowedError&quot;,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: &quot;DOMException&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonexceptionjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dahut&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;type&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;SomeException&quot;,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonextendedattributesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;ServiceWorkerGlobalScope&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: &quot;WorkerGlobalScope&quot;,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Global&quot;,
+                &quot;arguments&quot;: null,
+                &quot;rhs&quot;: {
+                    &quot;type&quot;: &quot;identifier-list&quot;,
+                    &quot;value&quot;: [
+                        &quot;Worker&quot;,
+                        &quot;ServiceWorker&quot;
+                    ]
+                }
+            },
+            {
+                &quot;name&quot;: &quot;Exposed&quot;,
+                &quot;arguments&quot;: null,
+                &quot;rhs&quot;: {
+                    &quot;type&quot;: &quot;identifier&quot;,
+                    &quot;value&quot;: &quot;ServiceWorker&quot;
+                }
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsongenericjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/generic.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/generic.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/generic.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,181 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Foo&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: &quot;Promise&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: &quot;ResponsePromise&quot;,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: true,
+                            &quot;generic&quot;: &quot;sequence&quot;,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: {
+                                &quot;sequence&quot;: false,
+                                &quot;generic&quot;: null,
+                                &quot;nullable&quot;: true,
+                                &quot;array&quot;: false,
+                                &quot;union&quot;: false,
+                                &quot;idlType&quot;: &quot;DOMString&quot;
+                            }
+                        }
+                    }
+                },
+                &quot;name&quot;: &quot;bar&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: &quot;Promise&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: 1,
+                    &quot;nullableArray&quot;: [false],
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;DOMString&quot;
+                    }
+                },
+                &quot;name&quot;: &quot;baz&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;ServiceWorkerClients&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: &quot;Promise&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: true,
+                        &quot;nullableArray&quot;: [false],
+                        &quot;array&quot;: 1,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;Client&quot;
+                    }
+                },
+                &quot;name&quot;: &quot;getServiced&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: &quot;Promise&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;any&quot;
+                    }
+                },
+                &quot;name&quot;: &quot;reloadAll&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;FetchEvent&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: &quot;ResponsePromise&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;any&quot;
+                    }
+                },
+                &quot;name&quot;: &quot;default&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;Event&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsongettersetterjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,114 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dictionary&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;propertyCount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: true,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyName&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;propertyValue&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonidentifierqualifiednamesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,217 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;typedef&quot;,
+        &quot;typeExtAttrs&quot;: [],
+        &quot;idlType&quot;: {
+            &quot;sequence&quot;: false,
+            &quot;generic&quot;: null,
+            &quot;nullable&quot;: false,
+            &quot;array&quot;: false,
+            &quot;union&quot;: false,
+            &quot;idlType&quot;: &quot;float&quot;
+        },
+        &quot;name&quot;: &quot;number&quot;,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;FrameworkException&quot;,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: false,
+                &quot;idlType&quot;: &quot;long&quot;,
+                &quot;name&quot;: &quot;ERR_NOT_FOUND&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;number&quot;,
+                    &quot;value&quot;: 1
+                },
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;field&quot;,
+                &quot;name&quot;: &quot;code&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;System&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;object&quot;
+                },
+                &quot;name&quot;: &quot;createObject&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;interface&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;keyName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;TextField&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;const&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;value&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Foo&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;op&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;object&quot;
+                        },
+                        &quot;name&quot;: &quot;interface&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonimplementsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/implements.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/implements.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/implements.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Node&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;nodeType&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;EventTarget&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;addEventListener&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;type&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;EventListener&quot;
+                        },
+                        &quot;name&quot;: &quot;listener&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;boolean&quot;
+                        },
+                        &quot;name&quot;: &quot;useCapture&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;implements&quot;,
+        &quot;target&quot;: &quot;Node&quot;,
+        &quot;implements&quot;: &quot;EventTarget&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonindexedpropertiesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,272 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;OrderedMap&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;size&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;any&quot;
+                },
+                &quot;name&quot;: &quot;getByIndex&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;index&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: true,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;setByIndex&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;index&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;any&quot;
+                        },
+                        &quot;name&quot;: &quot;value&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: true,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;removeByIndex&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;index&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;any&quot;
+                },
+                &quot;name&quot;: &quot;get&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;name&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: true,
+                &quot;creator&quot;: true,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;set&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;name&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;any&quot;
+                        },
+                        &quot;name&quot;: &quot;value&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: true,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;remove&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;name&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoninheritsgetterjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Animal&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Person&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;age&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: true,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;Animal&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoninterfaceinheritsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,80 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Animal&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Human&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Dog&quot;
+                },
+                &quot;name&quot;: &quot;pet&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;Animal&quot;,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dog&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Human&quot;
+                },
+                &quot;name&quot;: &quot;owner&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;Animal&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoniterablejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterable.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterable.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterable.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;IterableOne&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;iterable&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;IterableTwo&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;iterable&quot;,
+                &quot;idlType&quot;: [
+                    {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;short&quot;
+                    },
+                    {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: true,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;double&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsoniteratorjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterator.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterator.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterator.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,301 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;SessionManager&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Session&quot;
+                },
+                &quot;name&quot;: &quot;getSessionForUser&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;username&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;sessionCount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;iterator&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Session&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Session&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;username&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;SessionManager2&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Session2&quot;
+                },
+                &quot;name&quot;: &quot;getSessionForUser&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;username&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;sessionCount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;iterator&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Session2&quot;
+                },
+                &quot;iteratorObject&quot;: &quot;SessionIterator&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Session2&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;username&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;SessionIterator&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;remainingSessions&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;NodeList&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;iterator&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Node&quot;
+                },
+                &quot;iteratorObject&quot;: &quot;NodeIterator&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;NodeIterator&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;iterator&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Node&quot;
+                },
+                &quot;iteratorObject&quot;: &quot;object&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonlegacyiterablejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;LegacyIterable&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;legacyiterable&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonmapjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/map.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/map.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/map.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;HeaderMap&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [{
+            &quot;name&quot;: &quot;MapClass&quot;,
+            &quot;arguments&quot;: null,
+            &quot;typePair&quot;: [{
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+            }]
+        }]
+    }
+]
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonmaplikejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/maplike.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/maplike.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/maplike.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;MapLike&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;maplike&quot;,
+                &quot;idlType&quot;: [
+                    {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;long&quot;
+                    },
+                    {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;float&quot;
+                    }
+                ],
+                &quot;readonly&quot;: false,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;ReadOnlyMapLike&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;maplike&quot;,
+                &quot;idlType&quot;: [
+                    {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;long&quot;
+                    },
+                    {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;float&quot;
+                    }
+                ],
+                &quot;readonly&quot;: true,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnamedconstructorjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;HTMLAudioElement&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: &quot;HTMLMediaElement&quot;,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;NamedConstructor&quot;,
+                &quot;arguments&quot;: null,
+                &quot;rhs&quot;: {
+                    &quot;type&quot;: &quot;identifier&quot;,
+                    &quot;value&quot;: &quot;Audio&quot;
+                }
+            },
+            {
+                &quot;name&quot;: &quot;NamedConstructor&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;src&quot;
+                    }
+                ],
+                &quot;rhs&quot;: {
+                    &quot;type&quot;: &quot;identifier&quot;,
+                    &quot;value&quot;: &quot;Audio&quot;
+                }
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnointerfaceobjectjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Query&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;any&quot;
+                },
+                &quot;name&quot;: &quot;lookupEntry&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;key&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;NoInterfaceObject&quot;,
+                &quot;arguments&quot;: null
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnullablejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullable.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullable.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullable.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;MyConstants&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;const&quot;,
+                &quot;nullable&quot;: true,
+                &quot;idlType&quot;: &quot;boolean&quot;,
+                &quot;name&quot;: &quot;ARE_WE_THERE_YET&quot;,
+                &quot;value&quot;: {
+                    &quot;type&quot;: &quot;boolean&quot;,
+                    &quot;value&quot;: false
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Node&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;namespaceURI&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonnullableobjectsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;A&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;B&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;C&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: true,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;A&quot;
+                        },
+                        &quot;name&quot;: &quot;x&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: true,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;B&quot;
+                        },
+                        &quot;name&quot;: &quot;x&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonoperationoptionalargjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,93 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;ColorCreator&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;object&quot;
+                },
+                &quot;name&quot;: &quot;createColor&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;v1&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;v2&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;v3&quot;
+                    },
+                    {
+                        &quot;optional&quot;: true,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;alpha&quot;,
+                        &quot;default&quot;: {
+                            &quot;type&quot;: &quot;number&quot;,
+                            &quot;value&quot;: 3.5
+                        }
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonoverloadingjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overloading.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overloading.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overloading.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,312 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;A&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;B&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;C&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;A&quot;
+                        },
+                        &quot;name&quot;: &quot;x&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;B&quot;
+                        },
+                        &quot;name&quot;: &quot;x&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;A&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;a&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [
+                            {
+                                &quot;name&quot;: &quot;AllowAny&quot;,
+                                &quot;arguments&quot;: null
+                            }
+                        ],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;a&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;b&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: true,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;c&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;f&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;long&quot;
+                        },
+                        &quot;name&quot;: &quot;a&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;b&quot;
+                    },
+                    {
+                        &quot;optional&quot;: true,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;c&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: true,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        &quot;name&quot;: &quot;d&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonoverridebuiltinsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,69 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;StringMap2&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;length&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;lookup&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;key&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;OverrideBuiltins&quot;,
+                &quot;arguments&quot;: null
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonpartialinterfacejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Foo&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;bar&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Foo&quot;,
+        &quot;partial&quot;: true,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;quux&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonprimitivesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/primitives.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/primitives.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/primitives.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,300 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Primitives&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;truth&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;byte&quot;
+                },
+                &quot;name&quot;: &quot;character&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;octet&quot;
+                },
+                &quot;name&quot;: &quot;value&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;short&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;positive&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;name&quot;: &quot;big&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;bigpositive&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long long&quot;
+                },
+                &quot;name&quot;: &quot;bigbig&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long long&quot;
+                },
+                &quot;name&quot;: &quot;bigbigpositive&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;real&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;double&quot;
+                },
+                &quot;name&quot;: &quot;bigreal&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unrestricted float&quot;
+                },
+                &quot;name&quot;: &quot;realwithinfinity&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unrestricted double&quot;
+                },
+                &quot;name&quot;: &quot;bigrealwithinfinity&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;string&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;ByteString&quot;
+                },
+                &quot;name&quot;: &quot;bytes&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Date&quot;
+                },
+                &quot;name&quot;: &quot;date&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;RegExp&quot;
+                },
+                &quot;name&quot;: &quot;regexp&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonprototyperootjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Node&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;nodeType&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;PrototypeRoot&quot;,
+                &quot;arguments&quot;: null
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonputforwardsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Person&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Name&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: [
+                    {
+                        &quot;name&quot;: &quot;PutForwards&quot;,
+                        &quot;arguments&quot;: null,
+                        &quot;rhs&quot;: {
+                            &quot;type&quot;: &quot;identifier&quot;,
+                            &quot;value&quot;: &quot;full&quot;
+                        }
+                    }
+                ]
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned short&quot;
+                },
+                &quot;name&quot;: &quot;age&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonregoperationsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,168 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dimensions&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;width&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;height&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;exception&quot;,
+        &quot;name&quot;: &quot;NoPointerDevice&quot;,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Button&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;isMouseOver&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;setDimensions&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;Dimensions&quot;
+                        },
+                        &quot;name&quot;: &quot;size&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;setDimensions&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;width&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;height&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonreplaceablejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Counter&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;value&quot;,
+                &quot;extAttrs&quot;: [
+                    {
+                        &quot;name&quot;: &quot;Replaceable&quot;,
+                        &quot;arguments&quot;: null
+                    }
+                ]
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;increment&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonsequencejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/sequence.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/sequence.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/sequence.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,113 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Canvas&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;drawPolygon&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: true,
+                            &quot;generic&quot;: &quot;sequence&quot;,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: {
+                                &quot;sequence&quot;: false,
+                                &quot;generic&quot;: null,
+                                &quot;nullable&quot;: false,
+                                &quot;array&quot;: false,
+                                &quot;union&quot;: false,
+                                &quot;idlType&quot;: &quot;float&quot;
+                            }
+                        },
+                        &quot;name&quot;: &quot;coordinates&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: true,
+                    &quot;generic&quot;: &quot;sequence&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;float&quot;
+                    }
+                },
+                &quot;name&quot;: &quot;getInflectionPoints&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Foo&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;sequence&quot;
+                },
+                &quot;name&quot;: &quot;bar&quot;,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }    
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonserializerjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/serializer.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/serializer.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/serializer.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,591 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Transaction&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Account&quot;
+                },
+                &quot;name&quot;: &quot;from&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Account&quot;
+                },
+                &quot;name&quot;: &quot;to&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;amount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;description&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;operation&quot;: {
+                    &quot;name&quot;: &quot;serialize&quot;,
+                    &quot;arguments&quot;: []
+                },
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Transaction2&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Account2&quot;
+                },
+                &quot;name&quot;: &quot;from&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Account2&quot;
+                },
+                &quot;name&quot;: &quot;to&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;amount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;description&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternMap&quot;: true,
+                &quot;names&quot;: [
+                    &quot;from&quot;,
+                    &quot;to&quot;,
+                    &quot;amount&quot;,
+                    &quot;description&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account2&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account3&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternMap&quot;: true,
+                &quot;names&quot;: [
+                    &quot;attribute&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account4&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;object&quot;
+                },
+                &quot;name&quot;: &quot;getItem&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;index&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternMap&quot;: true,
+                &quot;names&quot;: [
+                    &quot;getter&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account5&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;secondname&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternMap&quot;: true,
+                &quot;names&quot;: [
+                    &quot;inherit&quot;,
+                    &quot;secondname&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;Account&quot;,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account6&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;secondname&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternMap&quot;: true,
+                &quot;names&quot;: [
+                    &quot;inherit&quot;,
+                    &quot;attribute&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: &quot;Account&quot;,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account7&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;number&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternList&quot;: true,
+                &quot;names&quot;: [
+                    &quot;name&quot;,
+                    &quot;number&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Account8&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: true,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;object&quot;
+                },
+                &quot;name&quot;: &quot;getItem&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;unsigned long&quot;
+                        },
+                        &quot;name&quot;: &quot;index&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;serializer&quot;,
+                &quot;patternList&quot;: true,
+                &quot;names&quot;: [
+                    &quot;getter&quot;
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonsetlikejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/setlike.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/setlike.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/setlike.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;SetLike&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;setlike&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;readonly&quot;: false,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;ReadOnlySetLike&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;setlike&quot;,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;readonly&quot;: true,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstaticjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/static.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/static.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/static.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,151 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Point&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Circle&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;cx&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;cy&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;radius&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: true,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;long&quot;
+                },
+                &quot;name&quot;: &quot;triangulationCount&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: true,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;name&quot;: &quot;triangulate&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;Circle&quot;
+                        },
+                        &quot;name&quot;: &quot;c1&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;Circle&quot;
+                        },
+                        &quot;name&quot;: &quot;c2&quot;
+                    },
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;Circle&quot;
+                        },
+                        &quot;name&quot;: &quot;c3&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstringifierattributejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Student&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;id&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: true,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Constructor&quot;,
+                &quot;arguments&quot;: null
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstringifiercustomjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Student&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;id&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: true,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;familyName&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;givenName&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Constructor&quot;,
+                &quot;arguments&quot;: null
+            }
+        ]
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonstringifierjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;A&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: null,
+                &quot;arguments&quot;: [],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;A&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: true,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontreatasnulljson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Dog&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;owner&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;isMemberOfBreed&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [
+                            {
+                                &quot;name&quot;: &quot;TreatNullAs&quot;,
+                                &quot;arguments&quot;: null,
+                                &quot;rhs&quot;: {
+                                    &quot;type&quot;: &quot;identifier&quot;,
+                                    &quot;value&quot;: &quot;EmptyString&quot;
+                                }
+                            }
+                        ],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;breedName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontreatasundefinedjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Cat&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;name&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;DOMString&quot;
+                },
+                &quot;name&quot;: &quot;owner&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;isMemberOfBreed&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [
+                            {
+                                &quot;name&quot;: &quot;TreatUndefinedAs&quot;,
+                                &quot;arguments&quot;: null,
+                                &quot;rhs&quot;: {
+                                    &quot;type&quot;: &quot;identifier&quot;,
+                                    &quot;value&quot;: &quot;EmptyString&quot;
+                                }
+                            }
+                        ],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;DOMString&quot;
+                        },
+                        &quot;name&quot;: &quot;breedName&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontypedefnestedjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,226 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Point&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;x&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;y&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Rect&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;name&quot;: &quot;topleft&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;name&quot;: &quot;bottomright&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Widget&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;typedef&quot;,
+                &quot;typeExtAttrs&quot;: [],
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: true,
+                    &quot;generic&quot;: &quot;sequence&quot;,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: {
+                        &quot;sequence&quot;: false,
+                        &quot;generic&quot;: null,
+                        &quot;nullable&quot;: false,
+                        &quot;array&quot;: false,
+                        &quot;union&quot;: false,
+                        &quot;idlType&quot;: &quot;Point&quot;
+                    }
+                },
+                &quot;name&quot;: &quot;PointSequence&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Rect&quot;
+                },
+                &quot;name&quot;: &quot;bounds&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;pointWithinBounds&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;Point&quot;
+                        },
+                        &quot;name&quot;: &quot;p&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;allPointsWithinBounds&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;PointSequence&quot;
+                        },
+                        &quot;name&quot;: &quot;ps&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;typedef&quot;,
+        &quot;typeExtAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Clamp&quot;,
+                &quot;arguments&quot;: null
+            }
+        ],
+        &quot;idlType&quot;: {
+            &quot;sequence&quot;: false,
+            &quot;generic&quot;: null,
+            &quot;nullable&quot;: false,
+            &quot;array&quot;: false,
+            &quot;union&quot;: false,
+            &quot;idlType&quot;: &quot;octet&quot;
+        },
+        &quot;name&quot;: &quot;value&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontypedefjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,226 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Point&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;x&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;float&quot;
+                },
+                &quot;name&quot;: &quot;y&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;typedef&quot;,
+        &quot;typeExtAttrs&quot;: [],
+        &quot;idlType&quot;: {
+            &quot;sequence&quot;: true,
+            &quot;generic&quot;: &quot;sequence&quot;,
+            &quot;nullable&quot;: false,
+            &quot;array&quot;: false,
+            &quot;union&quot;: false,
+            &quot;idlType&quot;: {
+                &quot;sequence&quot;: false,
+                &quot;generic&quot;: null,
+                &quot;nullable&quot;: false,
+                &quot;array&quot;: false,
+                &quot;union&quot;: false,
+                &quot;idlType&quot;: &quot;Point&quot;
+            }
+        },
+        &quot;name&quot;: &quot;PointSequence&quot;,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Rect&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;name&quot;: &quot;topleft&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Point&quot;
+                },
+                &quot;name&quot;: &quot;bottomright&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Widget&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;Rect&quot;
+                },
+                &quot;name&quot;: &quot;bounds&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;pointWithinBounds&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;Point&quot;
+                        },
+                        &quot;name&quot;: &quot;p&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;boolean&quot;
+                },
+                &quot;name&quot;: &quot;allPointsWithinBounds&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;PointSequence&quot;
+                        },
+                        &quot;name&quot;: &quot;ps&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    },
+    {
+        &quot;type&quot;: &quot;typedef&quot;,
+        &quot;typeExtAttrs&quot;: [
+            {
+                &quot;name&quot;: &quot;Clamp&quot;,
+                &quot;arguments&quot;: null
+            }
+        ],
+        &quot;idlType&quot;: {
+            &quot;sequence&quot;: false,
+            &quot;generic&quot;: null,
+            &quot;nullable&quot;: false,
+            &quot;array&quot;: false,
+            &quot;union&quot;: false,
+            &quot;idlType&quot;: &quot;octet&quot;
+        },
+        &quot;name&quot;: &quot;value&quot;,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsontypesuffixesjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Suffixes&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;test&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: false,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: true,
+                            &quot;generic&quot;: &quot;sequence&quot;,
+                            &quot;nullable&quot;: true,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: {
+                                &quot;sequence&quot;: false,
+                                &quot;generic&quot;: null,
+                                &quot;nullable&quot;: true,
+                                &quot;array&quot;: 1,
+                                &quot;nullableArray&quot;: [false],
+                                &quot;union&quot;: false,
+                                &quot;idlType&quot;: &quot;DOMString&quot;
+                            }
+                        },
+                        &quot;name&quot;: &quot;foo&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonuniontypejson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;Union&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: true,
+                    &quot;idlType&quot;: [
+                        {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;float&quot;
+                        },
+                        {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: true,
+                            &quot;idlType&quot;: [
+                                {
+                                    &quot;sequence&quot;: false,
+                                    &quot;generic&quot;: null,
+                                    &quot;nullable&quot;: false,
+                                    &quot;array&quot;: false,
+                                    &quot;union&quot;: false,
+                                    &quot;idlType&quot;: &quot;Date&quot;
+                                },
+                                {
+                                    &quot;sequence&quot;: false,
+                                    &quot;generic&quot;: null,
+                                    &quot;nullable&quot;: false,
+                                    &quot;array&quot;: false,
+                                    &quot;union&quot;: false,
+                                    &quot;idlType&quot;: &quot;Event&quot;
+                                }
+                            ]
+                        },
+                        {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: true,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: true,
+                            &quot;idlType&quot;: [
+                                {
+                                    &quot;sequence&quot;: false,
+                                    &quot;generic&quot;: null,
+                                    &quot;nullable&quot;: false,
+                                    &quot;array&quot;: false,
+                                    &quot;union&quot;: false,
+                                    &quot;idlType&quot;: &quot;Node&quot;
+                                },
+                                {
+                                    &quot;sequence&quot;: false,
+                                    &quot;generic&quot;: null,
+                                    &quot;nullable&quot;: false,
+                                    &quot;array&quot;: false,
+                                    &quot;union&quot;: false,
+                                    &quot;idlType&quot;: &quot;DOMString&quot;
+                                }
+                            ]
+                        }
+                    ]
+                },
+                &quot;name&quot;: &quot;test&quot;,
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonvariadicoperationsjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+[
+    {
+        &quot;type&quot;: &quot;interface&quot;,
+        &quot;name&quot;: &quot;IntegerSet&quot;,
+        &quot;partial&quot;: false,
+        &quot;members&quot;: [
+            {
+                &quot;type&quot;: &quot;attribute&quot;,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;inherit&quot;: false,
+                &quot;readonly&quot;: true,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;unsigned long&quot;
+                },
+                &quot;name&quot;: &quot;cardinality&quot;,
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;union&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: true,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;long&quot;
+                        },
+                        &quot;name&quot;: &quot;ints&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            },
+            {
+                &quot;type&quot;: &quot;operation&quot;,
+                &quot;getter&quot;: false,
+                &quot;setter&quot;: false,
+                &quot;creator&quot;: false,
+                &quot;deleter&quot;: false,
+                &quot;legacycaller&quot;: false,
+                &quot;static&quot;: false,
+                &quot;stringifier&quot;: false,
+                &quot;idlType&quot;: {
+                    &quot;sequence&quot;: false,
+                    &quot;generic&quot;: null,
+                    &quot;nullable&quot;: false,
+                    &quot;array&quot;: false,
+                    &quot;union&quot;: false,
+                    &quot;idlType&quot;: &quot;void&quot;
+                },
+                &quot;name&quot;: &quot;intersection&quot;,
+                &quot;arguments&quot;: [
+                    {
+                        &quot;optional&quot;: false,
+                        &quot;variadic&quot;: true,
+                        &quot;extAttrs&quot;: [],
+                        &quot;idlType&quot;: {
+                            &quot;sequence&quot;: false,
+                            &quot;generic&quot;: null,
+                            &quot;nullable&quot;: false,
+                            &quot;array&quot;: false,
+                            &quot;union&quot;: false,
+                            &quot;idlType&quot;: &quot;long&quot;
+                        },
+                        &quot;name&quot;: &quot;ints&quot;
+                    }
+                ],
+                &quot;extAttrs&quot;: []
+            }
+        ],
+        &quot;inheritance&quot;: null,
+        &quot;extAttrs&quot;: []
+    }
+]
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjsonw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,72 @@
</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/resources/webidl2/test/syntax/json/allowany.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/array.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/attributes.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/callback.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/caller.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constants.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/constructor.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary-inherits.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/dictionary.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation-dos.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/documentation.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/enum.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/equivalent-decl.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception-inheritance.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/exception.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/extended-attributes.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/generic.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/getter-setter.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/identifier-qualified-names.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/implements.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/indexed-properties.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/inherits-getter.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/interface-inherits.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterable.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/iterator.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/legacyiterable.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/map.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/maplike.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/namedconstructor.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nointerfaceobject.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullable.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/nullableobjects.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/operation-optional-arg.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overloading.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/overridebuiltins.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/partial-interface.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/primitives.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/prototyperoot.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/putforwards.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/reg-operations.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/replaceable.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/sequence.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/serializer.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/setlike.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/static.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-attribute.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier-custom.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/stringifier.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasnull.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/treatasundefined.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef-nested.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typedef.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/typesuffixes.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/uniontype.json
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/json/variadic-operations.json
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxopttypedefnestedjson"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/typedef-nested.json (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/typedef-nested.json                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/typedef-nested.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+{
+    &quot;allowNestedTypedefs&quot;: true
+}
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxoptw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax/opt/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</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/resources/webidl2/test/syntax/opt/typedef-nested.json
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testsyntaxjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+
+var wp = process.env.JSCOV ? require(&quot;../lib-cov/webidl2&quot;) : require(&quot;../lib/webidl2&quot;)
+,   expect = require(&quot;expect.js&quot;)
+,   pth = require(&quot;path&quot;)
+,   fs = require(&quot;fs&quot;)
+,   jdp = require(&quot;jsondiffpatch&quot;)
+,   debug = true
+;
+describe(&quot;Parses all of the IDLs to produce the correct ASTs&quot;, function () {
+    var dir = pth.join(__dirname, &quot;syntax/idl&quot;)
+    ,   skip = {} // use if we have a broken test
+    ,   idls = fs.readdirSync(dir)
+                  .filter(function (it) { return (/\.widl$/).test(it) &amp;&amp; !skip[it]; })
+                  .map(function (it) { return pth.join(dir, it); })
+    ,   jsons = idls.map(function (it) { return pth.join(__dirname, &quot;syntax/json&quot;, pth.basename(it).replace(&quot;.widl&quot;, &quot;.json&quot;)); })
+    ;
+    
+    for (var i = 0, n = idls.length; i &lt; n; i++) {
+        var idl = idls[i], json = jsons[i];
+
+        var func = (function (idl, json) {
+            return function () {
+                try {
+                    var optFile = pth.join(__dirname, &quot;syntax/opt&quot;, pth.basename(json));
+                    var opt = undefined;
+                    if (fs.existsSync(optFile))
+                        opt = JSON.parse(fs.readFileSync(optFile, &quot;utf8&quot;));
+                    var diff = jdp.diff(JSON.parse(fs.readFileSync(json, &quot;utf8&quot;)),
+                                        wp.parse(fs.readFileSync(idl, &quot;utf8&quot;), opt));
+                    if (diff &amp;&amp; debug) console.log(JSON.stringify(diff, null, 4));
+                    expect(diff).to.be(undefined);
+                }
+                catch (e) {
+                    console.log(e.toString());
+                    throw e;
+                }
+            };
+        }(idl, json));
+        it(&quot;should produce the same AST for &quot; + idl, func);
+    }
+});
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,20 @@
</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/resources/webidl2/test/invalid.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/mocha.opts
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/syntax.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwebmakewebtestsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/make-web-tests.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/make-web-tests.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/make-web-tests.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+
+// generates tests that work in a browser
+
+// XXX
+//  have it run through valid and invalid properly
+
+var pth = require(&quot;path&quot;)
+,   fs = require(&quot;fs&quot;)
+,   dir = function (path) {
+        return pth.join(__dirname, &quot;..&quot;, path);
+    }
+,   allFromDir = function (dir, ext, asJSON) {
+        return fs.readdirSync(dir)
+                 .filter(function (it) { return ext.test(it); })
+                 .map(function (it) {
+                     var cnt = fs.readFileSync(pth.join(dir, it), &quot;utf8&quot;);
+                     return asJSON ? JSON.parse(cnt) : cnt;
+                 });
+    }
+,   data = {
+        valid:  {
+            json:   allFromDir(dir(&quot;syntax/json&quot;), /\.json$/, true)
+        ,   idl:    allFromDir(dir(&quot;syntax/idl&quot;), /\.w?idl$/, false)
+        }
+    ,   invalid:{
+            json:   allFromDir(dir(&quot;invalid/json&quot;), /\.json$/, true)
+        ,   idl:    allFromDir(dir(&quot;invalid/idl&quot;), /\.w?idl$/, false)
+        }
+    }
+,   html = [
+        &quot;&lt;!DOCTYPE html&gt;&quot;
+    ,   &quot;&lt;html&gt;&quot;
+    ,   &quot;  &lt;head&gt;&lt;meta charset='utf-8''&gt;&lt;link rel='stylesheet' href='../../node_modules/mocha/mocha.css'&gt;&quot;
+    ,   &quot;    &lt;title&gt;WebIDL2 Browser Tests&lt;/title&gt;&quot;
+    ,   &quot;    &lt;script&gt;var data = &quot; + JSON.stringify(data) + &quot;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;/head&gt;&quot;
+    ,   &quot;  &lt;body&gt;&lt;div id='mocha'&gt;&lt;/div&gt;&quot;
+    ,   &quot;  &lt;script src='https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'&gt;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script src='../../node_modules/expect.js/expect.js'&gt;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script src='../../node_modules/mocha/mocha.js'&gt;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script src='../../node_modules/jsondiffpatch/jsondiffpatch.min.js'&gt;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script src='../../lib/webidl2.js'&gt;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script&gt;mocha.setup('bdd');&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script src='run-tests.js'&gt;&lt;/script&gt;&quot;
+    ,   &quot;  &lt;script&gt;mocha.run();&lt;/script&gt;&quot;
+    ,   &quot;  &lt;/body&gt;&quot;
+    ,   &quot;&lt;/html&gt;&quot;
+    ].join(&quot;\n&quot;)
+;
+
+fs.writeFileSync(&quot;browser-tests.html&quot;, html, &quot;utf8&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwebruntestsjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/run-tests.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/run-tests.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/run-tests.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+
+describe(&quot;Parses all of the IDLs to produce the correct ASTs&quot;, function () {
+    for (var i = 0, n = data.valid.idl.length; i &lt; n; i++) {
+        var idl = data.valid.idl[i], json = data.valid.json[i];
+        var func = (function (idl, json) {
+            return function () {
+                try {
+                    // the AST contains NaN and +/-Infinity that cannot be serialised to JSON
+                    // the stored JSON ASTs use the same replacement function as is used below
+                    // so we compare based on that
+                    var diff = jsondiffpatch.diff(json, WebIDL2.parse(idl));
+                    if (diff &amp;&amp; debug) console.log(JSON.stringify(diff, null, 4));
+                    expect(diff).to.be(undefined);
+                }
+                catch (e) {
+                    console.log(e.toString());
+                    throw e;
+                }
+            };
+        }(idl, json));
+        it(&quot;should produce the same AST for &quot; + i, func);
+    }
+});
+
+describe(&quot;Parses all of the invalid IDLs to check that they blow up correctly&quot;, function () {
+    for (var i = 0, n = data.invalid.idl.length; i &lt; n; i++) {
+        var idl = data.invalid.idl[i], error = data.invalid.json[i];
+        var func = (function (idl, err) {
+            return function () {
+                var error;
+                try {
+                    var ast = WebIDL2.parse(idl);
+                    console.log(JSON.stringify(ast, null, 4));
+                }
+                catch (e) {
+                    error = e;
+                }
+                finally {
+                    expect(error).to.be.ok();
+                    expect(error.message).to.equal(err.message);
+                    expect(error.line).to.equal(err.line);
+                }
+                
+            };
+        }(idl, error));
+        it(&quot;should produce the right error for &quot; + i, func);
+    }
+});
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwebw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</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/resources/webidl2/test/web/make-web-tests.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/web/run-tests.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocLICENSE"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/LICENSE (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/LICENSE                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/LICENSE        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,202 @@
</span><ins>+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocMakefile"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/Makefile (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/Makefile                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/Makefile        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,158 @@
</span><ins>+########################################################################
+# $Id$
+# Copyright 2009 Aplix Corporation. All rights reserved.
+# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#     http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+########################################################################
+
+UNAME = $(shell uname)
+INCDIRS = $(OBJDIR)
+SRCDIR = src
+DOCDIR = doc
+EXAMPLESDIR = examples
+OBJDIR = obj
+
+########################################################################
+# Linux configuration
+#
+ifneq (,$(filter Linux%, $(UNAME))) 
+
+CFLAGS = -g -Wall -Werror -O0 $(patsubst %, -I%, $(INCDIRS))
+OBJSUFFIX = .o
+EXESUFFIX =
+#LIBS = -lefence
+OBJOPTION = -o
+EXEOPTION = -o
+
+else
+########################################################################
+# Darwin configuration
+#
+ifneq (,$(filter Darwin%, $(UNAME))) 
+
+CFLAGS = -g -Wall -Werror -O2 $(patsubst %, -I%, $(INCDIRS))
+OBJSUFFIX = .o
+EXESUFFIX =
+OBJOPTION = -o
+# The -o in the following line has a space after it, which must not be removed.
+EXEOPTION = -o 
+
+else
+########################################################################
+# Windows (cygwin but using MS compiler) configuration
+#
+# this is messy - should probably use vcvars.bat
+ifneq (,$(filter CYGWIN%, $(UNAME))) 
+VISUALSTUDIODIR = $(wildcard /cygdrive/c/Program*Files/Microsoft*Visual*Studio*8)
+SDKDIR = $(wildcard /cygdrive/c/Program*Files/Microsoft*SDKs/Windows/*/Lib)
+ifeq (,$(VISUALSTUDIODIR))
+VISUALSTUDIODIR = $(wildcard /cygdrive/c/Program\ Files\ */Microsoft*Visual*Studio*10*)
+endif
+ifeq (,$(VISUALSTUDIODIR))
+VISUALSTUDIODIR = $(wildcard /cygdrive/c/Program\ Files\ */Microsoft*Visual*Studio*11*)
+endif
+# this is revelvant for vs2012 and windows 8 - sdk location has changed
+ifeq (,$(SDKDIR))
+SDKDIR = $(wildcard /cygdrive/c/Program\ Files\ */Windows*Kits)
+endif
+
+ifeq (,$(VISUALSTUDIODIR))
+$(error Could not find  MS Visual Studio) 
+else
+WINVISUALSTUDIODIR = $(shell cygpath -w '$(VISUALSTUDIODIR)')
+WINSDKDIR = $(shell cygpath -w '$(SDKDIR)')
+
+#$(error $(VISUALSTUDIODIR)) 
+
+CC = \
+        Lib='$(WINVISUALSTUDIODIR)\VC\LIB;$(WINVISUALSTUDIODIR)\VC\PlatformSDK\Lib;$(WINSDKDIR)' \
+        PATH='$(VISUALSTUDIODIR)/Common7/IDE:$(VISUALSTUDIODIR)/VC/BIN:$(VISUALSTUDIODIR)/Common7/Tools:$(VISUALSTUDIODIR)/SDK/v2.0/bin:$(VISUALSTUDIODIR)/8.0/Lib/win8/um/x86:'$$PATH \
+        Include='$(WINVISUALSTUDIODIR)\VC\INCLUDE;$(WINVISUALSTUDIODIR)\VC\PlatformSDK\Include' \
+        cl
+endif
+
+CFLAGS = /nologo /WX /W3 /wd4996 /Zi /O2 $(patsubst %, /I%, $(INCDIRS))
+OBJSUFFIX = .obj
+EXESUFFIX = .exe
+OBJOPTION = /Fo
+EXEOPTION = /Fe
+
+endif
+endif
+endif
+
+########################################################################
+# Common makefile
+#
+WIDLPROC = $(OBJDIR)/widlproc$(EXESUFFIX)
+DTD = $(OBJDIR)/widlprocxml.dtd
+
+ALL = $(WIDLPROC) $(DTD)
+all : $(ALL)
+
+SRCS = \
+        comment.c \
+        lex.c \
+        main.c \
+        misc.c \
+        node.c \
+        parse.c \
+        process.c
+
+OBJS = $(patsubst %.c, $(OBJDIR)/%$(OBJSUFFIX), $(SRCS))
+$(WIDLPROC) : $(OBJS)
+        $(CC) $(CFLAGS) $(EXEOPTION)$@ $^ $(LIBS)
+
+$(OBJDIR)/%$(OBJSUFFIX) : $(SRCDIR)/%.c
+        mkdir -p $(dir $@)
+        $(CC) $(CFLAGS) $(OBJOPTION)$@ -c $&lt;
+
+$(OBJDIR)/%.d : $(SRCDIR)/%.c
+        mkdir -p $(dir $@)
+        cc $(patsubst %, -I%, $(INCDIRS)) -MM -MG -MT $(patsubst %.d, %$(OBJSUFFIX), $@) $&lt; | sed '$(patsubst %, s| \(%\)| $(OBJDIR)/\1|;, $(AUTOGENHEADERS))' &gt;$@
+
+include $(patsubst %.c, $(OBJDIR)/%.d, $(SRCS))
+
+
+$(DTD) : $(DOCDIR)/htmltodtd.xsl $(DOCDIR)/widlproc.html
+        xsltproc -html $^ &gt;$@
+
+clean :
+        rm -f $(ALL) $(OBJS)
+
+veryclean :
+        rm -rf $(OBJDIR)
+
+SVNFILES = $(shell test -d .svn &amp;&amp; svn info -R . | sed -n 's/^Path: \(.*\)$$/\1/p')
+SVNBRANCH = $(shell test -d .svn &amp;&amp; svn info . | sed -n 's|^URL:.*/\([^/]*\)$$|\1|p')
+SVNREV = $(shell test -d .svn &amp;&amp; svn info -R . | sed -n 's/^Last Changed Rev: \([0-9][0-9]*\)$$/\1/p' | sort -g | tail -1)
+
+SVNLOG = history
+$(SVNLOG) : $(SVNFILES)
+        svn log -vrHEAD:311 &gt;$@
+
+zip : $(OBJDIR)/widlproc-$(SVNBRANCH)$(SVNREV).zip
+$(OBJDIR)/widlproc-$(SVNBRANCH)$(SVNREV).zip : $(WIDLPROC) $(DTD) $(DOCDIR)/widlproc.html $(SRCDIR)/widlprocxmltohtml.xsl Makefile $(SVNLOG)
+        rm -f $@
+        zip -j $@ $^ -x Makefile
+        zip $@ examples/*.widl examples/*.css examples/Makefile examples/README examples/*.xsl examples/*.html
+
+srczip : widlproc-src-$(SVNBRANCH)$(SVNREV).zip
+
+widlproc-src-%.zip : $(SVNFILES) $(SVNLOG)
+        zip $@ $^ 
+
+examples :
+        $(MAKE) -C examples SRCDIR=../src OBJDIR=../obj EXAMPLESOBJDIR=../obj/examples
+
+test : $(OBJS)
+        $(MAKE) -C test SRCDIR=../src OBJDIR=../obj
+
+.DELETE_ON_ERROR:
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocREADMEmd"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/README.md (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/README.md                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/README.md        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+# Uses
+
+widlproc can be used to validate WebIDL in W3C specifications. It serves as the basis for the [W3C Web IDL on-line checker](http://www.w3.org/2009/07/webidl-check).
+
+widlproc's generated XML is used to generate [webinos JavaScript APIs specifications](http://dev.webinos.org/specifications/draft/).
+
+# License
+
+widlproc is licensed under the Apache 2 License.
+
+# Others
+
+See also [webidl.js](https://github.com/darobin/webidl.js), a JavaScript-based Web IDL parser used by various tools in W3C.
+
+# Credits
+
+Most of the work on widlproc was done by Tim Renouf and Paddy Byers. Aplix corporation owns the copyright of the code up to June 2011.
+
+The tool is kept up to date with the changes in the spec by Dominique Hazael-Massieux, through funding from the [webinos project](http://webinos.org/) since June 2011.
+
+# Documentation
+
+See doc/widlproc.html in the tree.
+
+# Build Instructions
+
+## Windows
+
+Install requirements
+* Cygwin - must install must install libs/libxslt
+* Visual Studio express 2012 or 2010 (see difference below)
+
+makefile uses cygwin make. References are coded in the make file to detect teh current version of visual studio 
+
+# Future work
+windows build could be improved to handle multipe versions with vcvars.bat
+http://stackoverflow.com/questions/62029/vs2008-command-prompt-cygwin
+
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdochtmltodtdxsl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;us-ascii&quot;?&gt;
+&lt;!-- ====================================================================
+$Id$
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Stylesheet to extract DTD for widlprocxml from widlproc.html
+===================================================================== --&gt;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&gt;
+&lt;xsl:output method=&quot;text&quot; encoding=&quot;us-ascii&quot; indent=&quot;no&quot;/&gt;
+
+&lt;!--  &lt;pre class=&quot;dtd&quot;&gt; element  --&gt;
+&lt;xsl:template match=&quot;pre[@class='dtd']&quot;&gt;
+    &lt;xsl:value-of select=&quot;.&quot;/&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Ignore other text.  --&gt;
+&lt;xsl:template match=&quot;text()&quot; priority=&quot;-100&quot;/&gt;
+
+&lt;/xsl:stylesheet&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdochtmltodtdxslorig"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl.orig (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl.orig                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/htmltodtd.xsl.orig        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;us-ascii&quot;?&gt;
+&lt;!--====================================================================
+$Id$
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+Stylesheet to extract DTD for widlprocxml from widlproc.html
+=====================================================================--&gt;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&gt;
+&lt;xsl:output method=&quot;text&quot; encoding=&quot;us-ascii&quot; indent=&quot;no&quot;/&gt;
+
+&lt;!-- &lt;pre class=&quot;dtd&quot;&gt; element --&gt;
+&lt;xsl:template match=&quot;pre[@class='dtd']&quot;&gt;
+    &lt;xsl:value-of select=&quot;.&quot;/&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Ignore other text. --&gt;
+&lt;xsl:template match=&quot;text()&quot; priority=&quot;-100&quot;/&gt;
+
+&lt;/xsl:stylesheet&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdocw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</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/resources/webidl2/test/widlproc/doc/htmltodtd.xsl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdocwidlprochtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,1124 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
+&lt;!-- ====================================================================
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+===================================================================== --&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=us-ascii&quot;&gt;
+&lt;title&gt;widlproc&lt;/title&gt;
+&lt;style type=&quot;text/css&quot;&gt;
+    body { color: black; font: 10pt verdana; }
+    a:link { text-decoration: none; }
+    a:visited { text-decoration: none; }
+    a:hover { text-decoration: underline; }
+    dt { margin-top: 0.5em; }
+    dd { margin-left: 1em; margin-bottom: 0.5em; }
+    li { margin-bottom: 0; }
+    h4 { font-size: 10pt; }
+    table { border: 1px solid; border-collapse: collapse; }
+    td { border: 1px solid; }
+    th { border: 1px solid; }
+    code { background-color: #f0f0f0; }
+    pre { background-color: #f0f0f0; }
+    .indent { margin-left: 3em; }
+    .issue { background-color: #00CCCC; }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;widlproc&lt;/h1&gt;
+
+&lt;p&gt;Tim Renouf, Aplix Corp&lt;/p&gt;
+&lt;p&gt;$Id$
+&lt;/p&gt;
+
+&lt;h2&gt;Introduction&lt;/h2&gt;
+
+&lt;p&gt;
+widlproc is a processor that accepts as input
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt; (the 30 September 2009 editor's draft),
+with comments in a subset of the format used by
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;.
+The format it accepts is proposed by Aplix for authoring
+&lt;a href=&quot;#bondi&quot;&gt;BONDI&lt;/a&gt; interface definitions.
+&lt;/p&gt;
+
+&lt;p&gt;
+The output of widlproc is an XML representation of the
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt; input,
+with added XML elements representing the
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;-like comments.
+&lt;/p&gt;
+
+&lt;h2&gt;Usage&lt;/h2&gt;
+
+&lt;p&gt;
+&lt;code&gt;widlproc &lt;i&gt;filename&lt;/i&gt;&lt;/code&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+widlproc reads the file named &lt;em&gt;filename&lt;/em&gt;, and 
+sends its XML output format to stdout.
+&lt;/p&gt;
+
+&lt;h2&gt;Input format&lt;/h2&gt;
+
+&lt;p&gt;
+The input format accepted by widlproc is
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt;
+(with an extension used in the
+&lt;a href=&quot;#w3cgeo&quot;&gt;W3C Geolocation API&lt;/a&gt;),
+with comments in a format reminiscent of that used by
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;h3&gt;Web IDL extension from W3C geolocation API&lt;/h3&gt;
+
+&lt;h4&gt;double&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;code&gt;double&lt;/code&gt; is allowed as a DeclarationType or a BoxedType.
+&lt;/p&gt;
+
+&lt;h3&gt;Doxygen-like comment introduction&lt;/h3&gt;
+
+&lt;p&gt;
+Only a small subset of Doxygen functionality is supported by
+widlproc, plus additions to handle the BONDI concepts of API features
+and device capabilities.
+&lt;/p&gt;
+
+&lt;p&gt;
+In particular, no links are added automatically. (This could be added
+in the future.)
+&lt;/p&gt;
+
+&lt;h3&gt;Doxygen comment block&lt;/h3&gt;
+
+&lt;h4&gt;Comment referral point&lt;/h4&gt;
+
+&lt;p&gt;
+Each &lt;em&gt;Doxygen comment block&lt;/em&gt; refers to a &lt;em&gt;comment referral
+point&lt;/em&gt; in the Web IDL, one of
+module, interface, exception, const, attribute, operation or argument.
+&lt;/p&gt;
+
+&lt;h4&gt;Block comment&lt;/h4&gt;
+
+&lt;p&gt;
+A block comment (delimited by &lt;code&gt;/* */&lt;/code&gt;) whose first character
+after the &lt;code&gt;/*&lt;/code&gt; is &lt;code&gt;!&lt;/code&gt; or a second &lt;code&gt;*&lt;/code&gt;
+is a &lt;em&gt;Doxygen comment block&lt;/em&gt;.
+&lt;/p&gt;
+
+&lt;p&gt;
+Normally the comment block refers to the next comment referral point in
+the Web IDL.
+If the first character is &lt;code&gt;&amp;lt;&lt;/code&gt;, so the comment block is introduced
+with &lt;code&gt;/**&amp;lt;&lt;/code&gt; or &lt;code&gt;/*!&amp;lt;&lt;/code&gt; , then the comment block
+refers back to the previous comment referral point.
+&lt;/p&gt;
+
+&lt;p&gt;
+The text of the comment block
+excludes the initial &lt;code&gt;!&lt;/code&gt; or &lt;code&gt;*&lt;/code&gt; (and the &lt;code&gt;&amp;lt;&lt;/code&gt;
+for a referring back block),
+and excludes an initial (after whitespace) &lt;code&gt;*&lt;/code&gt;
+on each line,
+and, when not in a &lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block,
+excludes any line consisting entirely of whitespace, then &lt;code&gt;*&lt;/code&gt;
+characters, then whitespace.
+&lt;/p&gt;
+
+&lt;p&gt;
+widlproc does not support Doxygen commands to force a comment
+block to refer to a different referral point.
+&lt;/p&gt;
+
+&lt;h4&gt;Inline comments&lt;/h4&gt;
+
+&lt;p&gt;
+The maximal sequence of inline comments (delimited by &lt;code&gt;//&lt;/code&gt;)
+on adjacent lines, where all of the following conditions hold:
+&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+each has a first character after the &lt;code&gt;/&lt;/code&gt; of &lt;code&gt;!&lt;/code&gt; or
+a third &lt;code&gt;/&lt;/code&gt;;
+&lt;li&gt;
+no comment referral point intervenes;
+&lt;li&gt;
+either each comment in the sequence starts with a &lt;code&gt;&amp;lt;&lt;/code&gt;
+(see below), or none does;
+&lt;li&gt;
+the sequence contains at least two inline comments, or, if only one,
+then it starts with &lt;code&gt;&amp;lt;&lt;/code&gt; (see below);
+&lt;/ul&gt;
+&lt;p&gt;
+forms a &lt;em&gt;Doxygen comment block&lt;/em&gt;.
+&lt;/p&gt;
+
+&lt;p&gt;
+Normally the comment block refers to the next comment referral point in
+the Web IDL.
+If the first character of each comment is &lt;code&gt;&amp;lt;&lt;/code&gt;, so each
+comment in the block is introduced
+with &lt;code&gt;///&amp;lt;&lt;/code&gt; or &lt;code&gt;//!&amp;lt;&lt;/code&gt; , then the comment block
+refers back to the previous comment referral point.
+&lt;/p&gt;
+
+&lt;p&gt;
+The text of the comment block
+excludes the initial &lt;code&gt;!&lt;/code&gt; or &lt;code&gt;/&lt;/code&gt; (and the &lt;code&gt;&amp;lt;&lt;/code&gt;
+for a referring back block) of each inline comment,
+and, when not in a &lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block,
+excludes any line consisting entirely of whitespace, then &lt;code&gt;/&lt;/code&gt;
+characters, then whitespace.
+&lt;/p&gt;
+
+&lt;p&gt;
+widlproc does not support Doxygen commands to force a comment
+block to refer to a different referral point.
+&lt;/p&gt;
+
+&lt;h3&gt;Paragraph&lt;/h3&gt;
+
+&lt;p&gt;
+A comment block is broken into zero or more &lt;em&gt;paragraph&lt;/em&gt;s.
+One or more blank lines break the paragraphs (unless in a
+&lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block).
+&lt;/p&gt;
+
+&lt;p&gt;
+Certain commands (below) also start a new paragraph.
+&lt;/p&gt;
+
+&lt;p&gt;
+An
+&lt;a href=&quot;#html&quot;&gt;HTML block element&lt;/a&gt;
+is a paragraph.
+A blank line (other than in a
+&lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block)
+implicitly closes any open HTML elements, thus ending the paragraph.
+&lt;/p&gt;
+
+&lt;h3&gt;Doxygen-like commands&lt;/h3&gt;
+
+&lt;p&gt;
+widlproc supports a small subset of Doxygen commands, plus some additions
+to handle BONDI API features and device capabilities.
+&lt;/p&gt;
+
+&lt;p&gt;
+A command is always introduced with a &lt;code&gt;\&lt;/code&gt; character.
+The Doxygen alternative (from JavaDoc) of &lt;code&gt;@&lt;/code&gt; is not
+supported.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;api-feature&quot;&gt;\api-feature&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of an API feature
+used by the method being documented. The remainder of the paragraph is
+any description required of how (eg in what circumstance) the API feature
+is used.
+&lt;/p&gt;
+
+&lt;h4&gt;\name&lt;/h4&gt;
+
+&lt;p&gt;
+Declares a name for the document node associated with the current referral
+point. This is useful for the root document node that otherwise does not have
+a WebIDL identifier.
+&lt;/p&gt;
+
+&lt;h4&gt;\author&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph contains
+information about a single author of the specification. Multiple
+&lt;code&gt;\author&lt;/code&gt; commands should be used for multiple authors.
+&lt;/p&gt;
+
+&lt;p&gt;
+(Here widlproc differs from Doxygen; Doxygen also allows
+multiple authors on separate lines to appear in one &lt;code&gt;\author&lt;/code&gt;
+paragraph.)
+&lt;/p&gt;
+
+&lt;h4&gt;\b&lt;/h4&gt;
+
+&lt;p&gt;
+This renders the next word as bold. It is equivalent to enclosing the
+next word with &lt;code&gt;&amp;lt;b&gt; &amp;lt;/b&gt;&lt;/code&gt;.
+&lt;/p&gt;
+
+&lt;h4&gt;\brief&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph contains a brief
+description of the entity being documented.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;code&quot;&gt;\code, \endcode&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;code&gt;\code&lt;/code&gt;
+starts a new paragraph which is a &lt;em&gt;code block&lt;/em&gt;. The code block
+ends at the next &lt;code&gt;\endcode&lt;/code&gt; command.
+&lt;/p&gt;
+
+&lt;p&gt;
+Within the code block, whitespace and newlines are passed verbatim into
+the output.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;def-api-feature&quot;&gt;\def-api-feature&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of the API feature
+which is defined here. The description is an &lt;em&gt;def-api-feature block&lt;/em&gt;,
+consisting of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#device-cap&quot;&gt;&lt;code&gt;\device-cap&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;def-api-feature-set&quot;&gt;\def-api-feature-set&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of the API feature
+set which is defined here. The description is an &lt;em&gt;def-api-feature-set block&lt;/em&gt;,
+consisting of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#device-cap&quot;&gt;&lt;code&gt;\api-feature&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4&gt;\def-device-cap&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of the device capability
+which is defined here. The description consists of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#param&quot;&gt;&lt;code&gt;\param&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;def-instantiated&quot;&gt;\def-instantiated&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph.  The description is an &lt;em&gt;def-instantiated block&lt;/em&gt;,
+consisting of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#api-feature&quot;&gt;&lt;code&gt;\api-feature&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;device-cap&quot;&gt;\device-cap&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph.
+This command can appear only inside an
+&lt;a href=&quot;#def-api-feature&quot;&gt;def-api-feature block&lt;/a&gt;.
+The following word is the name of a device capability
+used by the API feature being documented.
+The remainder of the paragraph is
+any description required of how (eg in what circumstance) the device capability
+is used.
+&lt;/p&gt;
+
+&lt;h4&gt;\n&lt;/h4&gt;
+
+&lt;p&gt;
+Creates a line break in the output.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;param&quot;&gt;\param&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. This takes the following word as the name of
+a parameter (argument) of the entity being documented, then makes the
+remainder of the paragraph refer to that parameter.
+&lt;/p&gt;
+
+&lt;h4&gt;\return&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph is made to refer to
+the return type of the entity being documented.
+&lt;/p&gt;
+
+&lt;h4&gt;\throw&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The next word is taken to be the name of an
+exception thrown by the entity being documented, and the remainder of
+the paragraph documents that exception (in the &lt;code&gt;raises&lt;/code&gt; list of
+an &lt;code&gt;operation&lt;/code&gt;, or the &lt;code&gt;setraises&lt;/code&gt;
+clause of an &lt;code&gt;attribute&lt;/code&gt;).
+&lt;/p&gt;
+
+&lt;h4&gt;\version&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph contains
+version number information.
+&lt;/p&gt;
+
+&lt;h3&gt;Escape sequences&lt;/h3&gt;
+
+&lt;p&gt;
+The following escape sequences are recognized in a comment block:
+&lt;/p&gt;
+
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th&gt;escape sequence
+&lt;th&gt;result
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\\&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;\&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\&amp;amp;&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;&amp;amp;&lt;/code&gt; (escaped to &lt;code&gt;&amp;amp;amp;&lt;/code&gt; in output XML)
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\$&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;$&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\#&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;#&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt; (escaped to &lt;code&gt;&amp;amp;lt;&lt;/code&gt; in output XML)
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\&gt;&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;&gt;&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\%&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;%&lt;/code&gt;
+&lt;/table&gt;
+
+&lt;p&gt;
+Some of these escape sequences are used to avoid Doxygen features that
+widlproc does not currently implement. In particular,
+widlproc insists on a &lt;code&gt;$&lt;/code&gt; being escaped, to
+allow for possible future functionality.
+&lt;/p&gt;
+
+&lt;h3 id=&quot;html&quot;&gt;HTML in comments&lt;/h3&gt;
+
+&lt;p&gt;
+widlproc accepts a small subset of HTML elements.
+&lt;/p&gt;
+
+&lt;p&gt;
+An HTML block element is a paragraph.
+A blank line (other than in a
+&lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block)
+implicitly closes any open HTML elements, thus ending the paragraph.
+&lt;/p&gt;
+
+&lt;p&gt;
+The following HTML block elements are accepted:
+&lt;code&gt;dl&lt;/code&gt;
+&lt;code&gt;ol&lt;/code&gt;
+&lt;code&gt;p&lt;/code&gt;
+&lt;code&gt;table&lt;/code&gt;
+&lt;code&gt;ul&lt;/code&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+The following HTML inline elements are accepted:
+&lt;code&gt;a&lt;/code&gt;
+&lt;code&gt;img&lt;/code&gt;
+&lt;code&gt;b&lt;/code&gt;
+&lt;code&gt;br&lt;/code&gt;
+&lt;code&gt;em&lt;/code&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+The following HTML elements are accepted where valid inside one of the
+other elements:
+&lt;code&gt;dd&lt;/code&gt;
+&lt;code&gt;dt&lt;/code&gt;
+&lt;code&gt;li&lt;/code&gt;
+&lt;code&gt;td&lt;/code&gt;
+&lt;code&gt;th&lt;/code&gt;
+&lt;code&gt;tr&lt;/code&gt;
+&lt;/p&gt;
+
+
+&lt;h2&gt;Output format&lt;/h2&gt;
+
+&lt;p&gt;
+The output of widlproc is an XML representation of the
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt;,
+with added XML elements representing the
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;-like comments.
+&lt;/p&gt;
+
+&lt;h3&gt;Annotated document type declaration&lt;/h3&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!-- Autogenerated from widlproc.html : do not edit. --&gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Entities used elsewhere&lt;/h4&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ENTITY % block 'dl | p | table | ul' &gt;
+&amp;lt;!ENTITY % Block '(%block;)*' &gt;
+&amp;lt;!ENTITY % inline 'a | b | br | em | img' &gt;
+&amp;lt;!ENTITY % Inline '(#PCDATA | %inline;)*' &gt;
+&amp;lt;!ENTITY % Flow '(#PCDATA | %inline; | %block;)*' &gt;
+
+&amp;lt;!ELEMENT webidl (#PCDATA | ref)* &gt;
+&lt;/pre&gt;
+
+&lt;p&gt;
+The &lt;code&gt;&amp;lt;webidl&gt;&lt;/code&gt; element contains the literal text of the
+original Web IDL that the parent
+element was parsed from, minus the comments, with each reference to
+an interface name 
+enclosed in a &lt;code&gt;&amp;lt;ref&gt;&lt;/code&gt;..&lt;code&gt;&amp;lt;/ref&gt;&lt;/code&gt;.
+&lt;/p&gt;
+
+&lt;h4&gt;Definitions&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;em&gt;Definitions&lt;/em&gt; is the root element of the XML document.
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;ExtendedAttributeList&lt;/em&gt; specifies any extended attributes
+for the  &lt;em&gt;Interface&lt;/em&gt;, &lt;em&gt;Dictionary&lt;/em&gt;, &lt;em&gt;Exception&lt;/em&gt;,
+&lt;em&gt;Typedef&lt;/em&gt;, &lt;em&gt;Valuetype&lt;/em&gt; or &lt;em&gt;Const&lt;/em&gt; in the
+&lt;em&gt;Definition&lt;/em&gt;.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Definitions ( webidl, descriptive?, (Interface | Dictionary | Callback
+    | Enum | Exception | Typedef | Implements)*) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Interface&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Interface&lt;/em&gt; represents an interface. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the interface. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the interface.
+&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;partial&lt;/em&gt; attribute indicates that the definition of the interface complements an existing definition. The &lt;em&gt;callback&lt;/em&gt; attribute specificies that a given interface is a callback interface.&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;InterfaceInheritance&lt;/em&gt; element indicates that the interface
+inherits from other interface(s). Each &lt;em&gt;Name&lt;/em&gt; in the
+&lt;em&gt;InterfaceInheritance&lt;/em&gt; has a &lt;em&gt;name&lt;/em&gt; attribute giving the
+scoped name of the interface being inherited from.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Interface (webidl, descriptive?, ExtendedAttributeList?,
+        InterfaceInheritance?, (Const | Attribute | Operation | Stringifier* | Serializer* | Iterator | IteratorObject)* ) &gt;
+&amp;lt;!ATTLIST Interface name CDATA #REQUIRED
+                    partial (partial) #IMPLIED
+                    callback (callback) #IMPLIED
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT InterfaceInheritance (Name+) &gt;
+
+&amp;lt;!ELEMENT Name EMPTY &gt;
+&amp;lt;!ATTLIST Name name CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Dictionary&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Dictionary&lt;/em&gt; represents a dictionary. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the dictionary. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the dictionary.
+&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;partial&lt;/em&gt; attribute indicates that the definition of the interface complements an existing definition.&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;DictionaryInheritance&lt;/em&gt; element indicates that the dictionary
+inherits from other dictionary(s). Each &lt;em&gt;Name&lt;/em&gt; in the
+&lt;em&gt;DictionaryInheritance&lt;/em&gt; has a &lt;em&gt;name&lt;/em&gt; attribute giving the
+scoped name of the dictionary being inherited from.
+&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Dictionary (webidl, descriptive?, DictionaryInheritance?, DictionaryMember* ) &gt;
+&amp;lt;!ATTLIST Dictionary name CDATA #REQUIRED
+                    partial (partial) #IMPLIED
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT DictionaryInheritance (Name+) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Callback&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Callback&lt;/em&gt; represents a callback type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the dictionary. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;Type&lt;/em&gt; element specifies its return type.&lt;/p&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Argument&lt;/em&gt; is an argument to an operation.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name if it has one.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Callback (webidl, descriptive?, Type, ArgumentList? ) &gt;
+&amp;lt;!ATTLIST Callback name CDATA #REQUIRED
+                      id CDATA #REQUIRED&gt;
+&lt;/pre&gt;
+
+
+&lt;h4&gt;Enum&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Enum&lt;/em&gt; represents an enumeration. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the enumeration. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;EnumValue&lt;/em&gt; element indicates the values defined for that enumeration in its &lt;em&gt;stringvalue&lt;/em&gt; attribute.
+&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Enum (webidl, descriptive?, EnumValue* ) &gt;
+&amp;lt;!ATTLIST Enum name CDATA #REQUIRED 
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT EnumValue (webidl, descriptive?) &gt;
+&amp;lt;!ATTLIST EnumValue stringvalue CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+
+
+&lt;h4&gt;Exception&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Exception&lt;/em&gt; represents an exception.
+The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the exception.
+The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the exception.
+&lt;/p&gt;
+
+&lt;p&gt;
+An &lt;em&gt;ExceptionField&lt;/em&gt; represents a field in an exception.
+The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the field.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the field.
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;ExceptionInheritance&lt;/em&gt; element indicates that the exception
+inherits from another exception. The &lt;em&gt;Name&lt;/em&gt; in the
+&lt;em&gt;ExceptionInheritance&lt;/em&gt; has a &lt;em&gt;name&lt;/em&gt; attribute giving the
+scoped name of the exception being inherited from.
+&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Exception (webidl, descriptive?, ExtendedAttributeList?, ExceptionInheritance?,
+        (Const | ExceptionField)* ) &gt;
+&amp;lt;!ATTLIST Exception name CDATA #REQUIRED 
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT ExceptionInheritance (Name) &gt;
+&amp;lt;!ELEMENT ExceptionField (webidl, descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST ExceptionField name CDATA #REQUIRED
+                         id CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Typedef&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Typedef&lt;/em&gt; represents a type definition.
+The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the new type.
+The &lt;em&gt;Type&lt;/em&gt; element specifies it in terms of other types.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the typedef.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Typedef (webidl, descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST Typedef name CDATA #REQUIRED
+                  id CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Implements&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Implements&lt;/em&gt; represents Web IDL's
+&lt;code&gt;&lt;i&gt;ScopedName&lt;/i&gt; implements &lt;i&gt;ScopedName&lt;/i&gt;;&lt;/code&gt;
+syntax. The &lt;em&gt;name1&lt;/em&gt; and &lt;em&gt;name2&lt;/em&gt; attributes give the
+first and second scoped names respectively.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides the &lt;em&gt;Implements&lt;/em&gt;'s documentation if any.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Implements (webidl, descriptive?, ExtendedAttributeList?) &gt;
+&amp;lt;!ATTLIST Implements name1 CDATA #REQUIRED
+                     name2 CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Const&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;em&gt;Const&lt;/em&gt; represents Web IDL's
+&lt;code&gt;const &lt;i&gt;Type&lt;/i&gt; &lt;i&gt;identifier&lt;/i&gt; = &lt;i&gt;ConstExpr&lt;/i&gt;;&lt;/code&gt;
+syntax.
+The &lt;em&gt;Type&lt;/em&gt; specifies the constant's type, the
+&lt;em&gt;name&lt;/em&gt; attribute specifies the constant's name, and the
+&lt;em&gt;value&lt;/em&gt; attribute specifies its value.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides the &lt;em&gt;Const&lt;/em&gt;'s documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the const.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Const (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&amp;lt;!ATTLIST Const name CDATA #REQUIRED
+                value CDATA #IMPLIED
+                id CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Stringifier&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Stringifier&lt;/em&gt; represents the Web IDL &lt;code&gt;stringifier;&lt;/code&gt;
+syntax as an interface member.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides the &lt;em&gt;Stringifier&lt;/em&gt;'s documentation if any.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Stringifier (webidl, descriptive?, ExtendedAttributeList?) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Attribute&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Attribute&lt;/em&gt; represents an attribute as an interface member.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name. Each of the &lt;em&gt;stringifier&lt;/em&gt;, &lt;em&gt;static&lt;/em&gt; and
+&lt;em&gt;readonly&lt;/em&gt; attributes is set to a value the same as the attribute
+name when the corresponding keyword appears in the Web IDL input. The &lt;em&gt;inherit&lt;/em&gt; attribute is set to &lt;em&gt;inherit&lt;/em&gt; when the attribute inherits its getter.
+&lt;/p&gt;
+
+
+&lt;p&gt;
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element provides the attribute's documentation
+if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the attribute.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Attribute (webidl, descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST Attribute stringifier (stringifier) #IMPLIED
+                    readonly (readonly) #IMPLIED
+                    inherit (inherit) #IMPLIED
+                    static (static) #IMPLIED
+                    name CDATA #REQUIRED
+                    id CDATA #REQUIRED &gt;
+
+&lt;/pre&gt;
+
+
+&lt;h4&gt;Operation&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Operation&lt;/em&gt; represents a method on interface.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its return type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name.
+&lt;/p&gt;
+
+&lt;p&gt;
+Each of the &lt;em&gt;stringifier&lt;/em&gt;, &lt;em&gt;static&lt;/em&gt;, &lt;em&gt;getter&lt;/em&gt;,
+&lt;em&gt;setter&lt;/em&gt;, &lt;em&gt;creator&lt;/em&gt;, &lt;em&gt;deleter&lt;/em&gt; and &lt;em&gt;legacycaller&lt;/em&gt;, &lt;em&gt;serializer&lt;/em&gt;
+attributes is set to a value the same as the attribute
+name when the corresponding keyword appears in the Web IDL input.
+&lt;/p&gt;
+
+
+&lt;p&gt;
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element provides the attribute's documentation
+if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the operation if it has one.
+&lt;/p&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Argument&lt;/em&gt; is an argument to an operation.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name if it has one.
+&lt;/p&gt;
+
+&lt;p&gt;
+Each of the &lt;em&gt;optional&lt;/em&gt; and &lt;em&gt;ellipsis&lt;/em&gt;
+attributes is set to a value the same as the attribute
+name when the corresponding syntax appears in the Web IDL input.
+&lt;/p&gt;
+
+&lt;p&gt;The
+&lt;em&gt;value&lt;/em&gt; attribute used on optional arguments specifies default value for non-string values, and &lt;em&gt;stringvalue&lt;/em&gt; for string values.&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Operation (webidl, descriptive?, ExtendedAttributeList?,
+        (Type), ArgumentList) &gt;
+&amp;lt;!ATTLIST Operation stringifier (stringifier) #IMPLIED
+                    static (static) #IMPLIED
+                    getter (getter) #IMPLIED
+                    setter (setter) #IMPLIED
+                    creator (creator) #IMPLIED
+                    deleter (deleter) #IMPLIED
+                    serializer (serializer) #IMPLIED
+                    legacycaller (legacycaller) #IMPLIED
+                    name NMTOKEN #IMPLIED
+                    id NMTOKEN #IMPLIED &gt;
+
+
+&amp;lt;!ELEMENT ArgumentList (Argument*) &gt;
+
+&amp;lt;!ELEMENT Argument (descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST Argument
+                   optional (optional) #IMPLIED
+                   ellipsis (ellipsis) #IMPLIED
+                value CDATA #IMPLIED
+                stringvalue CDATA #IMPLIED
+                   name NMTOKEN #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Serializer&lt;/h4&gt;
+&lt;p&gt;A &lt;em&gt;Serializer&lt;/em&gt; represents a serializer for an interface, either defined in the prose or via a pattern.&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;descriptive&lt;/em&gt; element provides the serializer's documentation if any.&lt;/p&gt;
+
+
+&lt;p&gt;The &lt;em&gt;attribute&lt;/em&gt; attribute defines the attribute that is used for serialization if any.&lt;/p&gt;
+
+&lt;p&gt;The optional &lt;em&gt;Map&lt;/em&gt; and &lt;em&gt;List&lt;/em&gt; elements describe the pattern (if any) for the serializer. They take &lt;em&gt;PatternAttribute&lt;/em&gt; elements with a &lt;em&gt;name&lt;/em&gt; attribute that describes the attributes used for serialization.&lt;/p&gt;
+
+&lt;p&gt;&lt;em&gt;Map&lt;/em&gt; elements take a &lt;em&gt;pattern&lt;/em&gt; attribute that can be set to either &quot;getter&quot; (if the getter is used for serialization), &quot;all&quot; if all serializable attributes are to be used, or &quot;selection&quot; if the attributes named as children elements are to be used. Optionally, they take a &lt;em&gt;inherit&lt;/em&gt; attribute set to &quot;inherit&quot; if the serialization takes also into account inherited attributes.&lt;/p&gt;
+
+&lt;p&gt;&lt;em&gt;List&lt;/em&gt; elements take a &lt;em&gt;pattern&lt;/em&gt; attribute that can be set to either &quot;getter&quot; (if the getter is used for serialization), or &quot;selection&quot; if the attributes named as children elements are to be used.&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Serializer (webidl, descriptive?, ExtendedAttributeList?, (Map | List)?) &gt;
+&amp;lt;!ATTLIST Serializer attribute CDATA #IMPLIED &gt;
+
+&amp;lt;!ELEMENT Map  ((PatternAttribute*)) &gt;
+
+&amp;lt;!ATTLIST Map inherit (inherit) #IMPLIED
+                 pattern (getter|all|selection) #REQUIRED&gt;
+
+&amp;lt;!ELEMENT List  ((PatternAttribute*)) &gt;
+
+&amp;lt;!ATTLIST List pattern (getter|selection) #REQUIRED&gt;
+
+&amp;lt;!ELEMENT PatternAttribute EMPTY&gt;
+&amp;lt;!ATTLIST PatternAttribute name CDATA #REQUIRED&gt;
+
+&lt;/pre&gt;
+
+&lt;h4&gt;Iterator&lt;/h4&gt;
+&lt;p&gt;An &lt;em&gt;Iterator&lt;/em&gt; element defines  whether the interface has a custom iterator; the type of the iterated objects is defined in the &lt;em&gt;Type&lt;/em&gt; child. If that interator implements a particular interface, the name of that interface is set in the &lt;em&gt;interface&lt;/em&gt; attribute.&lt;/p&gt;
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Iterator (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&amp;lt;!ATTLIST Iterator interface CDATA #IMPLIED&gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;IteratorObject&lt;/h4&gt;
+&lt;p&gt;An &lt;em&gt;IteratorObject&lt;/em&gt; element denotes that the interface serves as an iterator object interface; the type of the iterated objects is defined in the &lt;em&gt;Type&lt;/em&gt; child.&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT IteratorObject (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&lt;/pre&gt;
+
+
+&lt;h4&gt;DictionaryMember&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;DictionaryMember&lt;/em&gt; represents a member of a dictionary.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name. 
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element provides the dictionary member's documentation
+if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the attribute.
+&lt;/p&gt;
+
+&lt;p&gt;The
+&lt;em&gt;value&lt;/em&gt; attribute specifies its value for non-string values, and &lt;em&gt;stringvalue&lt;/em&gt; for string values.&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT DictionaryMember (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&amp;lt;!ATTLIST DictionaryMember name CDATA #REQUIRED
+                    id CDATA #REQUIRED
+                value CDATA #IMPLIED
+                stringvalue CDATA #IMPLIED &gt;
+
+&lt;/pre&gt;
+
+
+&lt;h4&gt;Extended attributes&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;ExtendedAttributeList&lt;/em&gt; contains one or more
+&lt;em&gt;ExtendedAttribute&lt;/em&gt; element. Each &lt;em&gt;ExtendedAttribute&lt;/em&gt;
+has:
+&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+a &lt;em&gt;name&lt;/em&gt; attribute giving the name of the extended attribute;
+&lt;li&gt;
+if the extended attribute contains an &lt;code&gt;=&lt;/code&gt; sign followed by a
+value, a &lt;em&gt;value&lt;/em&gt; attribute giving the value, which is a scoped
+name or an identifier;
+&lt;li&gt;
+if the extended attribute contains parentheses (either with or without
+an &lt;code&gt;=&lt;/code&gt; sign), an &lt;em&gt;ArgumentList&lt;/em&gt; element giving the
+contents of the parentheses.
+&lt;/ul&gt;
+&lt;p&gt;
+If the &lt;em&gt;value&lt;/em&gt; attribute and the &lt;em&gt;ArgumentList&lt;/em&gt; element are
+both present, then &lt;em&gt;value&lt;/em&gt; must give an identifier rather than
+a scoped name.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT ExtendedAttributeList (ExtendedAttribute+) &gt;
+
+&amp;lt;!ELEMENT ExtendedAttribute (webidl, ArgumentList?) &gt;
+&amp;lt;!ATTLIST ExtendedAttribute name NMTOKEN #REQUIRED
+                            value CDATA #IMPLIED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Type&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;em&gt;Type&lt;/em&gt; represents a type. It has one of these forms:
+&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+The &lt;code&gt;any&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt; and &lt;code&gt;void&lt;/code&gt;
+types have the attribute
+&lt;em&gt;type&lt;/em&gt; set to the type, and no other attributes or elements.
+Note that the &lt;code&gt;void&lt;/code&gt; type appears only when the &lt;em&gt;Type&lt;/em&gt;
+element is a child of &lt;em&gt;Operation&lt;/em&gt;.
+&lt;li&gt;
+A type that is an interface has the attribute &lt;em&gt;name&lt;/em&gt; set to the
+name of that interface, and no other attributes or elements.
+&lt;li&gt;
+For the primitive types &lt;code&gt;short&lt;/code&gt;, &lt;code&gt;unsigned short&lt;/code&gt;,
+&lt;code&gt;long&lt;/code&gt;, &lt;code&gt;unsigned long&lt;/code&gt;, &lt;code&gt;long long&lt;/code&gt;,
+&lt;code&gt;unsigned long long&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;, &lt;code&gt;double&lt;/code&gt;,
+&lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;octet&lt;/code&gt;, &lt;code&gt;byte&lt;/code&gt; and &lt;code&gt;DOMString&lt;/code&gt;,
+there is an attribute &lt;em&gt;type&lt;/em&gt;
+whose value is one of those strings, and no other attributes or elements.
+However, if the type was specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+&lt;/ul&gt;
+&lt;p&gt;
+The restrictions on which combinations of elements and attributes are
+permitted are not encoded by the DTD.
+&lt;/p&gt;
+&lt;p&gt;
+The &lt;em&gt;descriptive&lt;/em&gt; element provides the documentation
+if any, when the &lt;em&gt;Type&lt;/em&gt; is a child of &lt;em&gt;Operation&lt;/em&gt;, and thus
+representing an operation's return type.
+&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;ExtendedAttributeList&lt;/em&gt; element provides the optional extended attributes that can be defined for a type through typedef, &amp;agrave; la &lt;code&gt;typedef [Clamp] octet Value;&lt;/code&gt;.&lt;/p&gt;
+
+&lt;!--  can't use enumerated values for the values of type, since DTD don't allow enumerated values to have space in them (which would be needed e.g. for &quot;long long&quot;)  --&gt;
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Type (descriptive?, ExtendedAttributeList?, Type*) &gt;
+&amp;lt;!ATTLIST Type type CDATA #IMPLIED
+               name NMTOKEN #IMPLIED
+               nullable (nullable) #IMPLIED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Sequence&lt;/h4&gt;
+
+&lt;p&gt;For a sequence type, the &lt;em&gt;Type&lt;/em&gt; element with an attribute &lt;em&gt;type&lt;/em&gt; set to &lt;em&gt;sequence&lt;/em&gt; contains an element &lt;em&gt;Type&lt;/em&gt; giving the sequence element type, and no other attributes or elements. If the sequence is specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+
+
+&lt;h4&gt;Array&lt;/h4&gt;
+
+&lt;p&gt;For an array type, the &lt;em&gt;Type&lt;/em&gt; element with an attribute &lt;em&gt;type&lt;/em&gt; set to &lt;em&gt;array&lt;/em&gt; contains an element &lt;em&gt;Type&lt;/em&gt; giving the array element type. If the array is specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+
+&lt;h4&gt;Union&lt;/h4&gt;
+
+&lt;p&gt;For a union type, the &lt;em&gt;Type&lt;/em&gt; element with an attribute &lt;em&gt;type&lt;/em&gt; set to &lt;em&gt;union&lt;/em&gt; contains at least two element &lt;em&gt;Type&lt;/em&gt; giving the union members type. If the union is specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+
+
+
+&lt;h4&gt;Descriptive elements&lt;/h4&gt;
+
+&lt;p&gt;
+The following elements contain documentation, extracted from the
+Doxygen-like comments in the input. &lt;code&gt;&amp;lt;param&gt;&lt;/code&gt;
+derives only from a &lt;code&gt;\param&lt;/code&gt; command used inside a
+&lt;code&gt;\def-device-cap&lt;/code&gt; block; any other &lt;code&gt;\param&lt;/code&gt; command
+is linked to a parameter (argument) of the method being documented.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT descriptive (description | brief | throw | author
+    | version | Code | api-feature | device-cap | def-api-feature
+    | def-api-feature-set | def-device-cap | def-instantiated | param)* &gt;
+
+&amp;lt;!ELEMENT description %Block; &gt;
+
+&amp;lt;!ELEMENT brief %Inline; &gt;
+
+&amp;lt;!ELEMENT throw %Inline; &gt;
+
+&amp;lt;!ELEMENT author %Inline; &gt;
+
+&amp;lt;!ELEMENT version %Inline; &gt;
+
+&amp;lt;!ELEMENT Code %Inline; &gt;
+
+&amp;lt;!ELEMENT api-feature %Inline; &gt;
+&amp;lt;!ATTLIST api-feature identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT device-cap %Inline; &gt;
+&amp;lt;!ATTLIST device-cap identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT param %Inline; &gt;
+&amp;lt;!ATTLIST param identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT def-api-feature (descriptive?) &gt;
+&amp;lt;!ATTLIST def-api-feature identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT def-api-feature-set (descriptive?) &gt;
+&amp;lt;!ATTLIST def-api-feature-set identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT def-instantiated (descriptive?) &gt;
+
+&amp;lt;!ELEMENT def-device-cap (descriptive?) &gt;
+&amp;lt;!ATTLIST def-device-cap identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT ref (#PCDATA) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;XHTML elements&lt;/h4&gt;
+
+&lt;p&gt;
+The following XHTML elements are part of widlprocxml:
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT a %Inline; &gt;
+&amp;lt;!ATTLIST a href CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT b %Inline; &gt;
+
+&amp;lt;!ELEMENT br EMPTY &gt;
+
+&amp;lt;!ELEMENT dd %Flow; &gt;
+
+&amp;lt;!ELEMENT dl ((dt | dd)*) &gt;
+
+&amp;lt;!ELEMENT dt %Inline; &gt;
+
+&amp;lt;!ELEMENT em %Inline; &gt;
+
+&amp;lt;!ELEMENT img %Inline; &gt;
+&amp;lt;!ATTLIST img src CDATA #REQUIRED 
+                 alt CDATA #IMPLIED&gt;
+
+
+&amp;lt;!ELEMENT li %Flow; &gt;
+
+&amp;lt;!ELEMENT p %Inline; &gt;
+
+&amp;lt;!ELEMENT table (tr*) &gt;
+
+&amp;lt;!ELEMENT td %Flow; &gt;
+
+&amp;lt;!ELEMENT th %Flow; &gt;
+
+&amp;lt;!ELEMENT tr ((th | td)*) &gt;
+
+&amp;lt;!ELEMENT ul (li*) &gt;
+&lt;/pre&gt;
+
+
+&lt;h2&gt;Bibliography&lt;/h2&gt;
+
+&lt;p id=&quot;bondi&quot;&gt;
+BONDI - an open source industry collaboration for widget and web technologies,
+&lt;a href=&quot;http://bondi.omtp.org/&quot;&gt;http://bondi.omtp.org/&lt;/a&gt;
+&lt;/p&gt;
+
+&lt;p id=&quot;doxygen&quot;&gt;
+Doxygen Source code documentation generator tool,
+&lt;a href=&quot;http://www.stack.nl/~dimitri/doxygen/index.html&quot;&gt;
+http://www.stack.nl/~dimitri/doxygen/index.html&lt;/a&gt;
+&lt;/p&gt;
+
+&lt;p id=&quot;w3cgeo&quot;&gt;
+W3C Geolocation API Specification Editor's Draft 3 April 2009,
+&lt;a href=&quot;http://dev.w3.org/geo/api/spec-source.html&quot;&gt;
+http://dev.w3.org/geo/api/spec-source.html&lt;/a&gt;
+&lt;/p&gt;
+
+&lt;p id=&quot;webidl&quot;&gt;
+Web IDL W3C Editor's Draft 3 May 2011,
+&lt;a href=&quot;http://dev.w3.org/2006/webapi/WebIDL&quot;&gt;http://dev.w3.org/2006/webapi/WebIDL&lt;/a&gt;
+&lt;/p&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocdocwidlprochtmlorig"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html.orig (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html.orig                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/doc/widlproc.html.orig        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,1124 @@
</span><ins>+&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;
+&lt;!--====================================================================
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+=====================================================================--&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=us-ascii&quot;&gt;
+&lt;title&gt;widlproc&lt;/title&gt;
+&lt;style type=&quot;text/css&quot;&gt;
+    body { color: black; font: 10pt verdana; }
+    a:link { text-decoration: none; }
+    a:visited { text-decoration: none; }
+    a:hover { text-decoration: underline; }
+    dt { margin-top: 0.5em; }
+    dd { margin-left: 1em; margin-bottom: 0.5em; }
+    li { margin-bottom: 0; }
+    h4 { font-size: 10pt; }
+    table { border: 1px solid; border-collapse: collapse; }
+    td { border: 1px solid; }
+    th { border: 1px solid; }
+    code { background-color: #f0f0f0; }
+    pre { background-color: #f0f0f0; }
+    .indent { margin-left: 3em; }
+    .issue { background-color: #00CCCC; }
+&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;widlproc&lt;/h1&gt;
+
+&lt;p&gt;Tim Renouf, Aplix Corp&lt;/p&gt;
+&lt;p&gt;$Id$
+&lt;/p&gt;
+
+&lt;h2&gt;Introduction&lt;/h2&gt;
+
+&lt;p&gt;
+widlproc is a processor that accepts as input
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt; (the 30 September 2009 editor's draft),
+with comments in a subset of the format used by
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;.
+The format it accepts is proposed by Aplix for authoring
+&lt;a href=&quot;#bondi&quot;&gt;BONDI&lt;/a&gt; interface definitions.
+&lt;/p&gt;
+
+&lt;p&gt;
+The output of widlproc is an XML representation of the
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt; input,
+with added XML elements representing the
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;-like comments.
+&lt;/p&gt;
+
+&lt;h2&gt;Usage&lt;/h2&gt;
+
+&lt;p&gt;
+&lt;code&gt;widlproc &lt;i&gt;filename&lt;/i&gt;&lt;/code&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+widlproc reads the file named &lt;em&gt;filename&lt;/em&gt;, and 
+sends its XML output format to stdout.
+&lt;/p&gt;
+
+&lt;h2&gt;Input format&lt;/h2&gt;
+
+&lt;p&gt;
+The input format accepted by widlproc is
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt;
+(with an extension used in the
+&lt;a href=&quot;#w3cgeo&quot;&gt;W3C Geolocation API&lt;/a&gt;),
+with comments in a format reminiscent of that used by
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;.
+&lt;/p&gt;
+
+&lt;h3&gt;Web IDL extension from W3C geolocation API&lt;/h3&gt;
+
+&lt;h4&gt;double&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;code&gt;double&lt;/code&gt; is allowed as a DeclarationType or a BoxedType.
+&lt;/p&gt;
+
+&lt;h3&gt;Doxygen-like comment introduction&lt;/h3&gt;
+
+&lt;p&gt;
+Only a small subset of Doxygen functionality is supported by
+widlproc, plus additions to handle the BONDI concepts of API features
+and device capabilities.
+&lt;/p&gt;
+
+&lt;p&gt;
+In particular, no links are added automatically. (This could be added
+in the future.)
+&lt;/p&gt;
+
+&lt;h3&gt;Doxygen comment block&lt;/h3&gt;
+
+&lt;h4&gt;Comment referral point&lt;/h4&gt;
+
+&lt;p&gt;
+Each &lt;em&gt;Doxygen comment block&lt;/em&gt; refers to a &lt;em&gt;comment referral
+point&lt;/em&gt; in the Web IDL, one of
+module, interface, exception, const, attribute, operation or argument.
+&lt;/p&gt;
+
+&lt;h4&gt;Block comment&lt;/h4&gt;
+
+&lt;p&gt;
+A block comment (delimited by &lt;code&gt;/* */&lt;/code&gt;) whose first character
+after the &lt;code&gt;/*&lt;/code&gt; is &lt;code&gt;!&lt;/code&gt; or a second &lt;code&gt;*&lt;/code&gt;
+is a &lt;em&gt;Doxygen comment block&lt;/em&gt;.
+&lt;/p&gt;
+
+&lt;p&gt;
+Normally the comment block refers to the next comment referral point in
+the Web IDL.
+If the first character is &lt;code&gt;&amp;lt;&lt;/code&gt;, so the comment block is introduced
+with &lt;code&gt;/**&amp;lt;&lt;/code&gt; or &lt;code&gt;/*!&amp;lt;&lt;/code&gt; , then the comment block
+refers back to the previous comment referral point.
+&lt;/p&gt;
+
+&lt;p&gt;
+The text of the comment block
+excludes the initial &lt;code&gt;!&lt;/code&gt; or &lt;code&gt;*&lt;/code&gt; (and the &lt;code&gt;&amp;lt;&lt;/code&gt;
+for a referring back block),
+and excludes an initial (after whitespace) &lt;code&gt;*&lt;/code&gt;
+on each line,
+and, when not in a &lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block,
+excludes any line consisting entirely of whitespace, then &lt;code&gt;*&lt;/code&gt;
+characters, then whitespace.
+&lt;/p&gt;
+
+&lt;p&gt;
+widlproc does not support Doxygen commands to force a comment
+block to refer to a different referral point.
+&lt;/p&gt;
+
+&lt;h4&gt;Inline comments&lt;/h4&gt;
+
+&lt;p&gt;
+The maximal sequence of inline comments (delimited by &lt;code&gt;//&lt;/code&gt;)
+on adjacent lines, where all of the following conditions hold:
+&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+each has a first character after the &lt;code&gt;/&lt;/code&gt; of &lt;code&gt;!&lt;/code&gt; or
+a third &lt;code&gt;/&lt;/code&gt;;
+&lt;li&gt;
+no comment referral point intervenes;
+&lt;li&gt;
+either each comment in the sequence starts with a &lt;code&gt;&amp;lt;&lt;/code&gt;
+(see below), or none does;
+&lt;li&gt;
+the sequence contains at least two inline comments, or, if only one,
+then it starts with &lt;code&gt;&amp;lt;&lt;/code&gt; (see below);
+&lt;/ul&gt;
+&lt;p&gt;
+forms a &lt;em&gt;Doxygen comment block&lt;/em&gt;.
+&lt;/p&gt;
+
+&lt;p&gt;
+Normally the comment block refers to the next comment referral point in
+the Web IDL.
+If the first character of each comment is &lt;code&gt;&amp;lt;&lt;/code&gt;, so each
+comment in the block is introduced
+with &lt;code&gt;///&amp;lt;&lt;/code&gt; or &lt;code&gt;//!&amp;lt;&lt;/code&gt; , then the comment block
+refers back to the previous comment referral point.
+&lt;/p&gt;
+
+&lt;p&gt;
+The text of the comment block
+excludes the initial &lt;code&gt;!&lt;/code&gt; or &lt;code&gt;/&lt;/code&gt; (and the &lt;code&gt;&amp;lt;&lt;/code&gt;
+for a referring back block) of each inline comment,
+and, when not in a &lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block,
+excludes any line consisting entirely of whitespace, then &lt;code&gt;/&lt;/code&gt;
+characters, then whitespace.
+&lt;/p&gt;
+
+&lt;p&gt;
+widlproc does not support Doxygen commands to force a comment
+block to refer to a different referral point.
+&lt;/p&gt;
+
+&lt;h3&gt;Paragraph&lt;/h3&gt;
+
+&lt;p&gt;
+A comment block is broken into zero or more &lt;em&gt;paragraph&lt;/em&gt;s.
+One or more blank lines break the paragraphs (unless in a
+&lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block).
+&lt;/p&gt;
+
+&lt;p&gt;
+Certain commands (below) also start a new paragraph.
+&lt;/p&gt;
+
+&lt;p&gt;
+An
+&lt;a href=&quot;#html&quot;&gt;HTML block element&lt;/a&gt;
+is a paragraph.
+A blank line (other than in a
+&lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block)
+implicitly closes any open HTML elements, thus ending the paragraph.
+&lt;/p&gt;
+
+&lt;h3&gt;Doxygen-like commands&lt;/h3&gt;
+
+&lt;p&gt;
+widlproc supports a small subset of Doxygen commands, plus some additions
+to handle BONDI API features and device capabilities.
+&lt;/p&gt;
+
+&lt;p&gt;
+A command is always introduced with a &lt;code&gt;\&lt;/code&gt; character.
+The Doxygen alternative (from JavaDoc) of &lt;code&gt;@&lt;/code&gt; is not
+supported.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;api-feature&quot;&gt;\api-feature&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of an API feature
+used by the method being documented. The remainder of the paragraph is
+any description required of how (eg in what circumstance) the API feature
+is used.
+&lt;/p&gt;
+
+&lt;h4&gt;\name&lt;/h4&gt;
+
+&lt;p&gt;
+Declares a name for the document node associated with the current referral
+point. This is useful for the root document node that otherwise does not have
+a WebIDL identifier.
+&lt;/p&gt;
+
+&lt;h4&gt;\author&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph contains
+information about a single author of the specification. Multiple
+&lt;code&gt;\author&lt;/code&gt; commands should be used for multiple authors.
+&lt;/p&gt;
+
+&lt;p&gt;
+(Here widlproc differs from Doxygen; Doxygen also allows
+multiple authors on separate lines to appear in one &lt;code&gt;\author&lt;/code&gt;
+paragraph.)
+&lt;/p&gt;
+
+&lt;h4&gt;\b&lt;/h4&gt;
+
+&lt;p&gt;
+This renders the next word as bold. It is equivalent to enclosing the
+next word with &lt;code&gt;&amp;lt;b&gt; &amp;lt;/b&gt;&lt;/code&gt;.
+&lt;/p&gt;
+
+&lt;h4&gt;\brief&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph contains a brief
+description of the entity being documented.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;code&quot;&gt;\code, \endcode&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;code&gt;\code&lt;/code&gt;
+starts a new paragraph which is a &lt;em&gt;code block&lt;/em&gt;. The code block
+ends at the next &lt;code&gt;\endcode&lt;/code&gt; command.
+&lt;/p&gt;
+
+&lt;p&gt;
+Within the code block, whitespace and newlines are passed verbatim into
+the output.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;def-api-feature&quot;&gt;\def-api-feature&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of the API feature
+which is defined here. The description is an &lt;em&gt;def-api-feature block&lt;/em&gt;,
+consisting of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#device-cap&quot;&gt;&lt;code&gt;\device-cap&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;def-api-feature-set&quot;&gt;\def-api-feature-set&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of the API feature
+set which is defined here. The description is an &lt;em&gt;def-api-feature-set block&lt;/em&gt;,
+consisting of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#device-cap&quot;&gt;&lt;code&gt;\api-feature&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4&gt;\def-device-cap&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The following word is the name of the device capability
+which is defined here. The description consists of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#param&quot;&gt;&lt;code&gt;\param&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;def-instantiated&quot;&gt;\def-instantiated&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph.  The description is an &lt;em&gt;def-instantiated block&lt;/em&gt;,
+consisting of the
+remainder of the paragraph, together with
+further paragraphs in the same block comment each of which is a plain
+paragraph, a paragraph started due to HTML markup, a &lt;code&gt;\brief&lt;/code&gt;
+paragraph, or a
+&lt;a href=&quot;#api-feature&quot;&gt;&lt;code&gt;\api-feature&lt;/code&gt;&lt;/a&gt;
+paragraph.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;device-cap&quot;&gt;\device-cap&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph.
+This command can appear only inside an
+&lt;a href=&quot;#def-api-feature&quot;&gt;def-api-feature block&lt;/a&gt;.
+The following word is the name of a device capability
+used by the API feature being documented.
+The remainder of the paragraph is
+any description required of how (eg in what circumstance) the device capability
+is used.
+&lt;/p&gt;
+
+&lt;h4&gt;\n&lt;/h4&gt;
+
+&lt;p&gt;
+Creates a line break in the output.
+&lt;/p&gt;
+
+&lt;h4 id=&quot;param&quot;&gt;\param&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. This takes the following word as the name of
+a parameter (argument) of the entity being documented, then makes the
+remainder of the paragraph refer to that parameter.
+&lt;/p&gt;
+
+&lt;h4&gt;\return&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph is made to refer to
+the return type of the entity being documented.
+&lt;/p&gt;
+
+&lt;h4&gt;\throw&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The next word is taken to be the name of an
+exception thrown by the entity being documented, and the remainder of
+the paragraph documents that exception (in the &lt;code&gt;raises&lt;/code&gt; list of
+an &lt;code&gt;operation&lt;/code&gt;, or the &lt;code&gt;setraises&lt;/code&gt;
+clause of an &lt;code&gt;attribute&lt;/code&gt;).
+&lt;/p&gt;
+
+&lt;h4&gt;\version&lt;/h4&gt;
+
+&lt;p&gt;
+Starts a new paragraph. The remainder of the paragraph contains
+version number information.
+&lt;/p&gt;
+
+&lt;h3&gt;Escape sequences&lt;/h3&gt;
+
+&lt;p&gt;
+The following escape sequences are recognized in a comment block:
+&lt;/p&gt;
+
+&lt;table&gt;
+&lt;tr&gt;
+&lt;th&gt;escape sequence
+&lt;th&gt;result
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\\&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;\&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\&amp;amp;&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;&amp;amp;&lt;/code&gt; (escaped to &lt;code&gt;&amp;amp;amp;&lt;/code&gt; in output XML)
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\$&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;$&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\#&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;#&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt; (escaped to &lt;code&gt;&amp;amp;lt;&lt;/code&gt; in output XML)
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\&gt;&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;&gt;&lt;/code&gt;
+&lt;tr&gt;
+&lt;td&gt;&lt;code&gt;\%&lt;/code&gt;
+&lt;td&gt;&lt;code&gt;%&lt;/code&gt;
+&lt;/table&gt;
+
+&lt;p&gt;
+Some of these escape sequences are used to avoid Doxygen features that
+widlproc does not currently implement. In particular,
+widlproc insists on a &lt;code&gt;$&lt;/code&gt; being escaped, to
+allow for possible future functionality.
+&lt;/p&gt;
+
+&lt;h3 id=&quot;html&quot;&gt;HTML in comments&lt;/h3&gt;
+
+&lt;p&gt;
+widlproc accepts a small subset of HTML elements.
+&lt;/p&gt;
+
+&lt;p&gt;
+An HTML block element is a paragraph.
+A blank line (other than in a
+&lt;a href=&quot;#code&quot;&gt;&lt;code&gt;\code&lt;/code&gt;&lt;/a&gt; block)
+implicitly closes any open HTML elements, thus ending the paragraph.
+&lt;/p&gt;
+
+&lt;p&gt;
+The following HTML block elements are accepted:
+&lt;code&gt;dl&lt;/code&gt;
+&lt;code&gt;ol&lt;/code&gt;
+&lt;code&gt;p&lt;/code&gt;
+&lt;code&gt;table&lt;/code&gt;
+&lt;code&gt;ul&lt;/code&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+The following HTML inline elements are accepted:
+&lt;code&gt;a&lt;/code&gt;
+&lt;code&gt;img&lt;/code&gt;
+&lt;code&gt;b&lt;/code&gt;
+&lt;code&gt;br&lt;/code&gt;
+&lt;code&gt;em&lt;/code&gt;
+&lt;/p&gt;
+
+&lt;p&gt;
+The following HTML elements are accepted where valid inside one of the
+other elements:
+&lt;code&gt;dd&lt;/code&gt;
+&lt;code&gt;dt&lt;/code&gt;
+&lt;code&gt;li&lt;/code&gt;
+&lt;code&gt;td&lt;/code&gt;
+&lt;code&gt;th&lt;/code&gt;
+&lt;code&gt;tr&lt;/code&gt;
+&lt;/p&gt;
+
+
+&lt;h2&gt;Output format&lt;/h2&gt;
+
+&lt;p&gt;
+The output of widlproc is an XML representation of the
+&lt;a href=&quot;#webidl&quot;&gt;Web IDL&lt;/a&gt;,
+with added XML elements representing the
+&lt;a href=&quot;#doxygen&quot;&gt;Doxygen&lt;/a&gt;-like comments.
+&lt;/p&gt;
+
+&lt;h3&gt;Annotated document type declaration&lt;/h3&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!-- Autogenerated from widlproc.html : do not edit. --&gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Entities used elsewhere&lt;/h4&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ENTITY % block 'dl | p | table | ul' &gt;
+&amp;lt;!ENTITY % Block '(%block;)*' &gt;
+&amp;lt;!ENTITY % inline 'a | b | br | em | img' &gt;
+&amp;lt;!ENTITY % Inline '(#PCDATA | %inline;)*' &gt;
+&amp;lt;!ENTITY % Flow '(#PCDATA | %inline; | %block;)*' &gt;
+
+&amp;lt;!ELEMENT webidl (#PCDATA | ref)* &gt;
+&lt;/pre&gt;
+
+&lt;p&gt;
+The &lt;code&gt;&amp;lt;webidl&gt;&lt;/code&gt; element contains the literal text of the
+original Web IDL that the parent
+element was parsed from, minus the comments, with each reference to
+an interface name 
+enclosed in a &lt;code&gt;&amp;lt;ref&gt;&lt;/code&gt;..&lt;code&gt;&amp;lt;/ref&gt;&lt;/code&gt;.
+&lt;/p&gt;
+
+&lt;h4&gt;Definitions&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;em&gt;Definitions&lt;/em&gt; is the root element of the XML document.
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;ExtendedAttributeList&lt;/em&gt; specifies any extended attributes
+for the  &lt;em&gt;Interface&lt;/em&gt;, &lt;em&gt;Dictionary&lt;/em&gt;, &lt;em&gt;Exception&lt;/em&gt;,
+&lt;em&gt;Typedef&lt;/em&gt;, &lt;em&gt;Valuetype&lt;/em&gt; or &lt;em&gt;Const&lt;/em&gt; in the
+&lt;em&gt;Definition&lt;/em&gt;.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Definitions ( webidl, descriptive?, (Interface | Dictionary | Callback
+    | Enum | Exception | Typedef | Implements)*) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Interface&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Interface&lt;/em&gt; represents an interface. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the interface. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the interface.
+&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;partial&lt;/em&gt; attribute indicates that the definition of the interface complements an existing definition. The &lt;em&gt;callback&lt;/em&gt; attribute specificies that a given interface is a callback interface.&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;InterfaceInheritance&lt;/em&gt; element indicates that the interface
+inherits from other interface(s). Each &lt;em&gt;Name&lt;/em&gt; in the
+&lt;em&gt;InterfaceInheritance&lt;/em&gt; has a &lt;em&gt;name&lt;/em&gt; attribute giving the
+scoped name of the interface being inherited from.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Interface (webidl, descriptive?, ExtendedAttributeList?,
+        InterfaceInheritance?, (Const | Attribute | Operation | Stringifier* | Serializer* | Iterator | IteratorObject)* ) &gt;
+&amp;lt;!ATTLIST Interface name CDATA #REQUIRED
+                    partial (partial) #IMPLIED
+                    callback (callback) #IMPLIED
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT InterfaceInheritance (Name+) &gt;
+
+&amp;lt;!ELEMENT Name EMPTY &gt;
+&amp;lt;!ATTLIST Name name CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Dictionary&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Dictionary&lt;/em&gt; represents a dictionary. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the dictionary. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the dictionary.
+&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;partial&lt;/em&gt; attribute indicates that the definition of the interface complements an existing definition.&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;DictionaryInheritance&lt;/em&gt; element indicates that the dictionary
+inherits from other dictionary(s). Each &lt;em&gt;Name&lt;/em&gt; in the
+&lt;em&gt;DictionaryInheritance&lt;/em&gt; has a &lt;em&gt;name&lt;/em&gt; attribute giving the
+scoped name of the dictionary being inherited from.
+&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Dictionary (webidl, descriptive?, DictionaryInheritance?, DictionaryMember* ) &gt;
+&amp;lt;!ATTLIST Dictionary name CDATA #REQUIRED
+                    partial (partial) #IMPLIED
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT DictionaryInheritance (Name+) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Callback&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Callback&lt;/em&gt; represents a callback type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the dictionary. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;Type&lt;/em&gt; element specifies its return type.&lt;/p&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Argument&lt;/em&gt; is an argument to an operation.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name if it has one.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Callback (webidl, descriptive?, Type, ArgumentList? ) &gt;
+&amp;lt;!ATTLIST Callback name CDATA #REQUIRED
+                      id CDATA #REQUIRED&gt;
+&lt;/pre&gt;
+
+
+&lt;h4&gt;Enum&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Enum&lt;/em&gt; represents an enumeration. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the enumeration. The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;EnumValue&lt;/em&gt; element indicates the values defined for that enumeration in its &lt;em&gt;stringvalue&lt;/em&gt; attribute.
+&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Enum (webidl, descriptive?, EnumValue* ) &gt;
+&amp;lt;!ATTLIST Enum name CDATA #REQUIRED 
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT EnumValue (webidl, descriptive?) &gt;
+&amp;lt;!ATTLIST EnumValue stringvalue CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+
+
+&lt;h4&gt;Exception&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Exception&lt;/em&gt; represents an exception.
+The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the exception.
+The &lt;em&gt;descriptive&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the exception.
+&lt;/p&gt;
+
+&lt;p&gt;
+An &lt;em&gt;ExceptionField&lt;/em&gt; represents a field in an exception.
+The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the field.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the field.
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;ExceptionInheritance&lt;/em&gt; element indicates that the exception
+inherits from another exception. The &lt;em&gt;Name&lt;/em&gt; in the
+&lt;em&gt;ExceptionInheritance&lt;/em&gt; has a &lt;em&gt;name&lt;/em&gt; attribute giving the
+scoped name of the exception being inherited from.
+&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Exception (webidl, descriptive?, ExtendedAttributeList?, ExceptionInheritance?,
+        (Const | ExceptionField)* ) &gt;
+&amp;lt;!ATTLIST Exception name CDATA #REQUIRED 
+                    id CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT ExceptionInheritance (Name) &gt;
+&amp;lt;!ELEMENT ExceptionField (webidl, descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST ExceptionField name CDATA #REQUIRED
+                         id CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Typedef&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Typedef&lt;/em&gt; represents a type definition.
+The &lt;em&gt;name&lt;/em&gt;
+attribute specifies the name of the new type.
+The &lt;em&gt;Type&lt;/em&gt; element specifies it in terms of other types.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides its documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the typedef.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Typedef (webidl, descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST Typedef name CDATA #REQUIRED
+                  id CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Implements&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Implements&lt;/em&gt; represents Web IDL's
+&lt;code&gt;&lt;i&gt;ScopedName&lt;/i&gt; implements &lt;i&gt;ScopedName&lt;/i&gt;;&lt;/code&gt;
+syntax. The &lt;em&gt;name1&lt;/em&gt; and &lt;em&gt;name2&lt;/em&gt; attributes give the
+first and second scoped names respectively.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides the &lt;em&gt;Implements&lt;/em&gt;'s documentation if any.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Implements (webidl, descriptive?, ExtendedAttributeList?) &gt;
+&amp;lt;!ATTLIST Implements name1 CDATA #REQUIRED
+                     name2 CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Const&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;em&gt;Const&lt;/em&gt; represents Web IDL's
+&lt;code&gt;const &lt;i&gt;Type&lt;/i&gt; &lt;i&gt;identifier&lt;/i&gt; = &lt;i&gt;ConstExpr&lt;/i&gt;;&lt;/code&gt;
+syntax.
+The &lt;em&gt;Type&lt;/em&gt; specifies the constant's type, the
+&lt;em&gt;name&lt;/em&gt; attribute specifies the constant's name, and the
+&lt;em&gt;value&lt;/em&gt; attribute specifies its value.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides the &lt;em&gt;Const&lt;/em&gt;'s documentation if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the const.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Const (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&amp;lt;!ATTLIST Const name CDATA #REQUIRED
+                value CDATA #IMPLIED
+                id CDATA #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Stringifier&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;Stringifier&lt;/em&gt; represents the Web IDL &lt;code&gt;stringifier;&lt;/code&gt;
+syntax as an interface member.
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element
+provides the &lt;em&gt;Stringifier&lt;/em&gt;'s documentation if any.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Stringifier (webidl, descriptive?, ExtendedAttributeList?) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Attribute&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Attribute&lt;/em&gt; represents an attribute as an interface member.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name. Each of the &lt;em&gt;stringifier&lt;/em&gt;, &lt;em&gt;static&lt;/em&gt; and
+&lt;em&gt;readonly&lt;/em&gt; attributes is set to a value the same as the attribute
+name when the corresponding keyword appears in the Web IDL input. The &lt;em&gt;inherit&lt;/em&gt; attribute is set to &lt;em&gt;inherit&lt;/em&gt; when the attribute inherits its getter.
+&lt;/p&gt;
+
+
+&lt;p&gt;
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element provides the attribute's documentation
+if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the attribute.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Attribute (webidl, descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST Attribute stringifier (stringifier) #IMPLIED
+                    readonly (readonly) #IMPLIED
+                    inherit (inherit) #IMPLIED
+                    static (static) #IMPLIED
+                    name CDATA #REQUIRED
+                    id CDATA #REQUIRED &gt;
+
+&lt;/pre&gt;
+
+
+&lt;h4&gt;Operation&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Operation&lt;/em&gt; represents a method on interface.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its return type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name.
+&lt;/p&gt;
+
+&lt;p&gt;
+Each of the &lt;em&gt;stringifier&lt;/em&gt;, &lt;em&gt;static&lt;/em&gt;, &lt;em&gt;getter&lt;/em&gt;,
+&lt;em&gt;setter&lt;/em&gt;, &lt;em&gt;creator&lt;/em&gt;, &lt;em&gt;deleter&lt;/em&gt; and &lt;em&gt;legacycaller&lt;/em&gt;, &lt;em&gt;serializer&lt;/em&gt;
+attributes is set to a value the same as the attribute
+name when the corresponding keyword appears in the Web IDL input.
+&lt;/p&gt;
+
+
+&lt;p&gt;
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element provides the attribute's documentation
+if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the operation if it has one.
+&lt;/p&gt;
+
+&lt;p&gt;
+An &lt;em&gt;Argument&lt;/em&gt; is an argument to an operation.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name if it has one.
+&lt;/p&gt;
+
+&lt;p&gt;
+Each of the &lt;em&gt;optional&lt;/em&gt; and &lt;em&gt;ellipsis&lt;/em&gt;
+attributes is set to a value the same as the attribute
+name when the corresponding syntax appears in the Web IDL input.
+&lt;/p&gt;
+
+&lt;p&gt;The
+&lt;em&gt;value&lt;/em&gt; attribute used on optional arguments specifies default value for non-string values, and &lt;em&gt;stringvalue&lt;/em&gt; for string values.&lt;/p&gt;
+
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Operation (webidl, descriptive?, ExtendedAttributeList?,
+        (Type), ArgumentList) &gt;
+&amp;lt;!ATTLIST Operation stringifier (stringifier) #IMPLIED
+                    static (static) #IMPLIED
+                    getter (getter) #IMPLIED
+                    setter (setter) #IMPLIED
+                    creator (creator) #IMPLIED
+                    deleter (deleter) #IMPLIED
+                    serializer (serializer) #IMPLIED
+                    legacycaller (legacycaller) #IMPLIED
+                    name NMTOKEN #IMPLIED
+                    id NMTOKEN #IMPLIED &gt;
+
+
+&amp;lt;!ELEMENT ArgumentList (Argument*) &gt;
+
+&amp;lt;!ELEMENT Argument (descriptive?, ExtendedAttributeList?, (Type)) &gt;
+&amp;lt;!ATTLIST Argument
+                   optional (optional) #IMPLIED
+                   ellipsis (ellipsis) #IMPLIED
+                value CDATA #IMPLIED
+                stringvalue CDATA #IMPLIED
+                   name NMTOKEN #REQUIRED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Serializer&lt;/h4&gt;
+&lt;p&gt;A &lt;em&gt;Serializer&lt;/em&gt; represents a serializer for an interface, either defined in the prose or via a pattern.&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;descriptive&lt;/em&gt; element provides the serializer's documentation if any.&lt;/p&gt;
+
+
+&lt;p&gt;The &lt;em&gt;attribute&lt;/em&gt; attribute defines the attribute that is used for serialization if any.&lt;/p&gt;
+
+&lt;p&gt;The optional &lt;em&gt;Map&lt;/em&gt; and &lt;em&gt;List&lt;/em&gt; elements describe the pattern (if any) for the serializer. They take &lt;em&gt;PatternAttribute&lt;/em&gt; elements with a &lt;em&gt;name&lt;/em&gt; attribute that describes the attributes used for serialization.&lt;/p&gt;
+
+&lt;p&gt;&lt;em&gt;Map&lt;/em&gt; elements take a &lt;em&gt;pattern&lt;/em&gt; attribute that can be set to either &quot;getter&quot; (if the getter is used for serialization), &quot;all&quot; if all serializable attributes are to be used, or &quot;selection&quot; if the attributes named as children elements are to be used. Optionally, they take a &lt;em&gt;inherit&lt;/em&gt; attribute set to &quot;inherit&quot; if the serialization takes also into account inherited attributes.&lt;/p&gt;
+
+&lt;p&gt;&lt;em&gt;List&lt;/em&gt; elements take a &lt;em&gt;pattern&lt;/em&gt; attribute that can be set to either &quot;getter&quot; (if the getter is used for serialization), or &quot;selection&quot; if the attributes named as children elements are to be used.&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Serializer (webidl, descriptive?, ExtendedAttributeList?, (Map | List)?) &gt;
+&amp;lt;!ATTLIST Serializer attribute CDATA #IMPLIED &gt;
+
+&amp;lt;!ELEMENT Map  ((PatternAttribute*)) &gt;
+
+&amp;lt;!ATTLIST Map inherit (inherit) #IMPLIED
+                 pattern (getter|all|selection) #REQUIRED&gt;
+
+&amp;lt;!ELEMENT List  ((PatternAttribute*)) &gt;
+
+&amp;lt;!ATTLIST List pattern (getter|selection) #REQUIRED&gt;
+
+&amp;lt;!ELEMENT PatternAttribute EMPTY&gt;
+&amp;lt;!ATTLIST PatternAttribute name CDATA #REQUIRED&gt;
+
+&lt;/pre&gt;
+
+&lt;h4&gt;Iterator&lt;/h4&gt;
+&lt;p&gt;An &lt;em&gt;Iterator&lt;/em&gt; element defines  whether the interface has a custom iterator; the type of the iterated objects is defined in the &lt;em&gt;Type&lt;/em&gt; child. If that interator implements a particular interface, the name of that interface is set in the &lt;em&gt;interface&lt;/em&gt; attribute.&lt;/p&gt;
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Iterator (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&amp;lt;!ATTLIST Iterator interface CDATA #IMPLIED&gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;IteratorObject&lt;/h4&gt;
+&lt;p&gt;An &lt;em&gt;IteratorObject&lt;/em&gt; element denotes that the interface serves as an iterator object interface; the type of the iterated objects is defined in the &lt;em&gt;Type&lt;/em&gt; child.&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT IteratorObject (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&lt;/pre&gt;
+
+
+&lt;h4&gt;DictionaryMember&lt;/h4&gt;
+
+&lt;p&gt;
+A &lt;em&gt;DictionaryMember&lt;/em&gt; represents a member of a dictionary.
+The &lt;em&gt;Type&lt;/em&gt; element specifies its type. The &lt;em&gt;name&lt;/em&gt;
+attribute specifies its name. 
+&lt;/p&gt;
+
+&lt;p&gt;
+The &lt;em&gt;descriptive&gt;&lt;/em&gt; element provides the dictionary member's documentation
+if any.
+The &lt;em&gt;id&lt;/em&gt; attribute specifies the absolute scoped name of the attribute.
+&lt;/p&gt;
+
+&lt;p&gt;The
+&lt;em&gt;value&lt;/em&gt; attribute specifies its value for non-string values, and &lt;em&gt;stringvalue&lt;/em&gt; for string values.&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT DictionaryMember (webidl, descriptive?, ExtendedAttributeList?, Type) &gt;
+&amp;lt;!ATTLIST DictionaryMember name CDATA #REQUIRED
+                    id CDATA #REQUIRED
+                value CDATA #IMPLIED
+                stringvalue CDATA #IMPLIED &gt;
+
+&lt;/pre&gt;
+
+
+&lt;h4&gt;Extended attributes&lt;/h4&gt;
+
+&lt;p&gt;
+An &lt;em&gt;ExtendedAttributeList&lt;/em&gt; contains one or more
+&lt;em&gt;ExtendedAttribute&lt;/em&gt; element. Each &lt;em&gt;ExtendedAttribute&lt;/em&gt;
+has:
+&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+a &lt;em&gt;name&lt;/em&gt; attribute giving the name of the extended attribute;
+&lt;li&gt;
+if the extended attribute contains an &lt;code&gt;=&lt;/code&gt; sign followed by a
+value, a &lt;em&gt;value&lt;/em&gt; attribute giving the value, which is a scoped
+name or an identifier;
+&lt;li&gt;
+if the extended attribute contains parentheses (either with or without
+an &lt;code&gt;=&lt;/code&gt; sign), an &lt;em&gt;ArgumentList&lt;/em&gt; element giving the
+contents of the parentheses.
+&lt;/ul&gt;
+&lt;p&gt;
+If the &lt;em&gt;value&lt;/em&gt; attribute and the &lt;em&gt;ArgumentList&lt;/em&gt; element are
+both present, then &lt;em&gt;value&lt;/em&gt; must give an identifier rather than
+a scoped name.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT ExtendedAttributeList (ExtendedAttribute+) &gt;
+
+&amp;lt;!ELEMENT ExtendedAttribute (webidl, ArgumentList?) &gt;
+&amp;lt;!ATTLIST ExtendedAttribute name NMTOKEN #REQUIRED
+                            value CDATA #IMPLIED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Type&lt;/h4&gt;
+
+&lt;p&gt;
+&lt;em&gt;Type&lt;/em&gt; represents a type. It has one of these forms:
+&lt;/p&gt;
+&lt;ul&gt;
+&lt;li&gt;
+The &lt;code&gt;any&lt;/code&gt;, &lt;code&gt;object&lt;/code&gt; and &lt;code&gt;void&lt;/code&gt;
+types have the attribute
+&lt;em&gt;type&lt;/em&gt; set to the type, and no other attributes or elements.
+Note that the &lt;code&gt;void&lt;/code&gt; type appears only when the &lt;em&gt;Type&lt;/em&gt;
+element is a child of &lt;em&gt;Operation&lt;/em&gt;.
+&lt;li&gt;
+A type that is an interface has the attribute &lt;em&gt;name&lt;/em&gt; set to the
+name of that interface, and no other attributes or elements.
+&lt;li&gt;
+For the primitive types &lt;code&gt;short&lt;/code&gt;, &lt;code&gt;unsigned short&lt;/code&gt;,
+&lt;code&gt;long&lt;/code&gt;, &lt;code&gt;unsigned long&lt;/code&gt;, &lt;code&gt;long long&lt;/code&gt;,
+&lt;code&gt;unsigned long long&lt;/code&gt;, &lt;code&gt;float&lt;/code&gt;, &lt;code&gt;double&lt;/code&gt;,
+&lt;code&gt;boolean&lt;/code&gt;, &lt;code&gt;octet&lt;/code&gt;, &lt;code&gt;byte&lt;/code&gt; and &lt;code&gt;DOMString&lt;/code&gt;,
+there is an attribute &lt;em&gt;type&lt;/em&gt;
+whose value is one of those strings, and no other attributes or elements.
+However, if the type was specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+&lt;/ul&gt;
+&lt;p&gt;
+The restrictions on which combinations of elements and attributes are
+permitted are not encoded by the DTD.
+&lt;/p&gt;
+&lt;p&gt;
+The &lt;em&gt;descriptive&lt;/em&gt; element provides the documentation
+if any, when the &lt;em&gt;Type&lt;/em&gt; is a child of &lt;em&gt;Operation&lt;/em&gt;, and thus
+representing an operation's return type.
+&lt;/p&gt;
+
+&lt;p&gt;The &lt;em&gt;ExtendedAttributeList&lt;/em&gt; element provides the optional extended attributes that can be defined for a type through typedef, &amp;agrave; la &lt;code&gt;typedef [Clamp] octet Value;&lt;/code&gt;.&lt;/p&gt;
+
+&lt;!-- can't use enumerated values for the values of type, since DTD don't allow enumerated values to have space in them (which would be needed e.g. for &quot;long long&quot;) --&gt;
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT Type (descriptive?, ExtendedAttributeList?, Type*) &gt;
+&amp;lt;!ATTLIST Type type CDATA #IMPLIED
+               name NMTOKEN #IMPLIED
+               nullable (nullable) #IMPLIED &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;Sequence&lt;/h4&gt;
+
+&lt;p&gt;For a sequence type, the &lt;em&gt;Type&lt;/em&gt; element with an attribute &lt;em&gt;type&lt;/em&gt; set to &lt;em&gt;sequence&lt;/em&gt; contains an element &lt;em&gt;Type&lt;/em&gt; giving the sequence element type, and no other attributes or elements. If the sequence is specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+
+
+&lt;h4&gt;Array&lt;/h4&gt;
+
+&lt;p&gt;For an array type, the &lt;em&gt;Type&lt;/em&gt; element with an attribute &lt;em&gt;type&lt;/em&gt; set to &lt;em&gt;array&lt;/em&gt; contains an element &lt;em&gt;Type&lt;/em&gt; giving the array element type. If the array is specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+
+&lt;h4&gt;Union&lt;/h4&gt;
+
+&lt;p&gt;For a union type, the &lt;em&gt;Type&lt;/em&gt; element with an attribute &lt;em&gt;type&lt;/em&gt; set to &lt;em&gt;union&lt;/em&gt; contains at least two element &lt;em&gt;Type&lt;/em&gt; giving the union members type. If the union is specified in the Web IDL with a trailing &lt;code&gt;?&lt;/code&gt;
+sign, then there is an attribute &lt;em&gt;nullable&lt;/em&gt; with the value
+&lt;code&gt;nullable&lt;/code&gt;.
+
+
+
+&lt;h4&gt;Descriptive elements&lt;/h4&gt;
+
+&lt;p&gt;
+The following elements contain documentation, extracted from the
+Doxygen-like comments in the input. &lt;code&gt;&amp;lt;param&gt;&lt;/code&gt;
+derives only from a &lt;code&gt;\param&lt;/code&gt; command used inside a
+&lt;code&gt;\def-device-cap&lt;/code&gt; block; any other &lt;code&gt;\param&lt;/code&gt; command
+is linked to a parameter (argument) of the method being documented.
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT descriptive (description | brief | throw | author
+    | version | Code | api-feature | device-cap | def-api-feature
+    | def-api-feature-set | def-device-cap | def-instantiated | param)* &gt;
+
+&amp;lt;!ELEMENT description %Block; &gt;
+
+&amp;lt;!ELEMENT brief %Inline; &gt;
+
+&amp;lt;!ELEMENT throw %Inline; &gt;
+
+&amp;lt;!ELEMENT author %Inline; &gt;
+
+&amp;lt;!ELEMENT version %Inline; &gt;
+
+&amp;lt;!ELEMENT Code %Inline; &gt;
+
+&amp;lt;!ELEMENT api-feature %Inline; &gt;
+&amp;lt;!ATTLIST api-feature identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT device-cap %Inline; &gt;
+&amp;lt;!ATTLIST device-cap identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT param %Inline; &gt;
+&amp;lt;!ATTLIST param identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT def-api-feature (descriptive?) &gt;
+&amp;lt;!ATTLIST def-api-feature identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT def-api-feature-set (descriptive?) &gt;
+&amp;lt;!ATTLIST def-api-feature-set identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT def-instantiated (descriptive?) &gt;
+
+&amp;lt;!ELEMENT def-device-cap (descriptive?) &gt;
+&amp;lt;!ATTLIST def-device-cap identifier CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT ref (#PCDATA) &gt;
+&lt;/pre&gt;
+
+&lt;h4&gt;XHTML elements&lt;/h4&gt;
+
+&lt;p&gt;
+The following XHTML elements are part of widlprocxml:
+&lt;/p&gt;
+
+&lt;pre class=&quot;dtd&quot;&gt;
+&amp;lt;!ELEMENT a %Inline; &gt;
+&amp;lt;!ATTLIST a href CDATA #REQUIRED &gt;
+
+&amp;lt;!ELEMENT b %Inline; &gt;
+
+&amp;lt;!ELEMENT br EMPTY &gt;
+
+&amp;lt;!ELEMENT dd %Flow; &gt;
+
+&amp;lt;!ELEMENT dl ((dt | dd)*) &gt;
+
+&amp;lt;!ELEMENT dt %Inline; &gt;
+
+&amp;lt;!ELEMENT em %Inline; &gt;
+
+&amp;lt;!ELEMENT img %Inline; &gt;
+&amp;lt;!ATTLIST img src CDATA #REQUIRED 
+                 alt CDATA #IMPLIED&gt;
+
+
+&amp;lt;!ELEMENT li %Flow; &gt;
+
+&amp;lt;!ELEMENT p %Inline; &gt;
+
+&amp;lt;!ELEMENT table (tr*) &gt;
+
+&amp;lt;!ELEMENT td %Flow; &gt;
+
+&amp;lt;!ELEMENT th %Flow; &gt;
+
+&amp;lt;!ELEMENT tr ((th | td)*) &gt;
+
+&amp;lt;!ELEMENT ul (li*) &gt;
+&lt;/pre&gt;
+
+
+&lt;h2&gt;Bibliography&lt;/h2&gt;
+
+&lt;p id=&quot;bondi&quot;&gt;
+BONDI - an open source industry collaboration for widget and web technologies,
+&lt;a href=&quot;http://bondi.omtp.org/&quot;&gt;http://bondi.omtp.org/&lt;/a&gt;
+&lt;/p&gt;
+
+&lt;p id=&quot;doxygen&quot;&gt;
+Doxygen Source code documentation generator tool,
+&lt;a href=&quot;http://www.stack.nl/~dimitri/doxygen/index.html&quot;&gt;
+http://www.stack.nl/~dimitri/doxygen/index.html&lt;/a&gt;
+&lt;/p&gt;
+
+&lt;p id=&quot;w3cgeo&quot;&gt;
+W3C Geolocation API Specification Editor's Draft 3 April 2009,
+&lt;a href=&quot;http://dev.w3.org/geo/api/spec-source.html&quot;&gt;
+http://dev.w3.org/geo/api/spec-source.html&lt;/a&gt;
+&lt;/p&gt;
+
+&lt;p id=&quot;webidl&quot;&gt;
+Web IDL W3C Editor's Draft 3 May 2011,
+&lt;a href=&quot;http://dev.w3.org/2006/webapi/WebIDL&quot;&gt;http://dev.w3.org/2006/webapi/WebIDL&lt;/a&gt;
+&lt;/p&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesMakefile"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/Makefile (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/Makefile                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/Makefile        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,79 @@
</span><ins>+########################################################################
+# $Id$
+# Copyright 2009 Aplix Corporation. All rights reserved.
+# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#     http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+########################################################################
+
+UNAME = $(shell uname)
+EXAMPLESDIR = .
+# The settings of SRCDIR (where to find the xsl style sheets), OBJDIR (where to
+# find widlproc and widlprocxml.dtd) and EXAMPLESOBJDIR (where to put the
+# resulting html files and any intermediate files) reflect the directory
+# structure of the released widlproc.zip file when unzipped. ../Makefile calls
+# this Makefile with these settings overridden to reflect the directory
+# structure in svn.
+SRCDIR = ..
+OBJDIR = ..
+EXAMPLESOBJDIR = obj
+
+########################################################################
+# Linux configuration
+#
+ifneq (,$(filter Linux%, $(UNAME))) 
+
+EXESUFFIX =
+
+else
+########################################################################
+# Darwin configuration
+#
+ifneq (,$(filter Darwin%, $(UNAME))) 
+
+EXESUFFIX =
+
+else
+########################################################################
+# Windows (cygwin but using MS compiler) configuration
+#
+ifneq (,$(filter CYGWIN%, $(UNAME))) 
+
+EXESUFFIX = .exe
+
+endif
+endif
+endif
+
+########################################################################
+# Common makefile
+#
+WIDLPROC = $(OBJDIR)/widlproc$(EXESUFFIX)
+DTD = $(OBJDIR)/widlprocxml.dtd
+
+WIDLS = $(patsubst $(EXAMPLESDIR)/%, %, $(wildcard $(EXAMPLESDIR)/*.widl))
+
+test : $(patsubst %.widl, $(EXAMPLESOBJDIR)/%.html, $(WIDLS)) $(EXAMPLESOBJDIR)/widlhtml.css
+        @echo &quot;$@ pass&quot;
+
+$(EXAMPLESOBJDIR)/%.html : $(EXAMPLESOBJDIR)/%.widlprocxml $(SRCDIR)/widlprocxmltohtml.xsl Makefile
+        cp $(SRCDIR)/widlprocxmltohtml.xsl $(dir $@)/
+        xsltproc $(dir $@)/widlprocxmltohtml.xsl $&lt; &gt;$@
+
+$(EXAMPLESOBJDIR)/%.widlprocxml : $(EXAMPLESDIR)/%.widl $(WIDLPROC) $(DTD) Makefile
+        mkdir -p $(dir $@)
+        $(WIDLPROC) $&lt; &gt;$@
+        cp $(OBJDIR)/widlprocxml.dtd $(dir $@)/
+        xmllint --noout --dtdvalid $(DTD) $@
+
+$(EXAMPLESOBJDIR)/widlhtml.css : $(EXAMPLESDIR)/widlhtml.css
+        cp $&lt; $@
+
+.DELETE_ON_ERROR:
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesREADME"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/README (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/README                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/README        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+########################################################################
+# $Id$
+# Copyright 2009 Aplix Corporation. All rights reserved.
+# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#     http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+########################################################################
+
+This examples directory contains two of the BONDI .widl files, a Makefile
+that processes them to generate html, and a .css file that the resulting
+html uses.
+
+The Makefile processes the .widl files as follows:
+
+ 1. For each .widl, generate the .widlprocxml file (an XML representation
+    of the information in the .widl) using widlproc.
+
+ 2. Validate (using xmllint) each .widlprocxml against the DTD.
+
+ 3. We want any reference in the resulting html to a type elsewhere in the
+    API to be a link. This is where we achieve this. First generate a
+    list of fqids (fully qualified identifiers) from fqid attributes in
+    the XML by running all .widlprocxml files through the style sheet
+    widlprocxmlfqids.xsl.
+
+ 4. Turn that list of fqids into a sed script that turns a &lt;ref&gt; to an
+    fqid into a &lt;ref ref=&quot;..&quot;&gt; to the fqid in the right .html file.
+
+ 5. For each .widlprocxml file, generate a .widlprocxml2 file by running
+    it through the sed script generated above.
+
+ 6. For each .widlprocxml2 file, generate a .html file by running it through
+    the widlprocxmltohtml.xsl style sheet.
+
+See the Makefile for details.
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesbondiwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,227 @@
</span><ins>+/*
+ * Licensed to OMTP Ltd. (OMTP) under one or more contributor license agreements. 
+ * See the NOTICE file distributed with this work for additional information regarding 
+ * copyright ownership. 
+ * 
+ * The Reference Implementation (save for such parts of the reference implementation made 
+ * available under separate terms and conditions) is made available under the terms of the 
+ * Apache License, version 2.0, subject to the condition that any &quot;Works&quot; and &quot;Derivative 
+ * Works&quot; used or distributed for commercial purposes must be and remain compliant with the
+ * BONDI specification as promulgated by OMTP in each release. Your implementation of the 
+ * Reference Implementation (whether object or source) must maintain these conditions, and 
+ * you must notify any recipient of this condition in a conspicuous way.
+ * 
+ * You may not use this BONDI Reference Implementation except in compliance with the License. 
+ * 
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 or at 
+ * http://bondi.omtp.org/BONDI-LICENSE-2.0 
+ */
+
+/**
+ * \brief Common BONDI functionality.
+ *
+ * These definitions can be used in all other BONDI modules as dependencies.
+  * \version 1.1
+ */
+module bondi {
+
+        /**
+         * \brief Array of DOMStrings.
+         */
+        typedef sequence&lt;DOMString&gt; StringArray;
+
+        /**
+         * \brief Array of 8-bit unsigned integer values.
+         */
+        typedef sequence&lt;octet&gt;     ByteArray;
+
+        /**
+         * \brief Array of 16-bit signed integer values.
+         */
+        typedef sequence&lt;short&gt;     ShortArray;
+
+        /**
+         * \brief Array of 32-bit signed integer values.
+         */
+        typedef sequence&lt;long&gt;      LongArray;
+
+        /**
+         * \brief Array of floating point values.
+         */
+        typedef sequence&lt;float&gt;     FloatArray;
+
+        /**
+         * \brief Generic Map object.
+         */
+        typedef Object              Map;
+
+        /**
+         * \brief Generic success callback interface.
+         */
+        [Callback=FunctionOnly, NoInterfaceObject] interface SuccessCallback {
+           /**
+            * \brief Method invoked when the asynchronous call completes successfully
+            */
+                void onSuccess();
+        };
+
+
+        /**
+         * \brief Success callback interface for requestFeature invocations
+         */
+    [Callback=FunctionOnly, NoInterfaceObject] interface RequestFeatureSuccessCallback {
+       /**
+            * \brief Method invoked upon a succesful requestFeature invocation
+            *
+            * \param ob Object implementing the JavaScript API associated with the requested Feature.
+            */
+        void onSuccess(in Object ob);
+     };
+
+
+        /**
+         * \brief Generic error callback interface.
+         */
+        [Callback=FunctionOnly, NoInterfaceObject] interface ErrorCallback {
+           /**
+            * \brief Method invoked when an error occurs
+            *
+            * \param error The error that is raised.
+            */
+                void onError(in GenericError error);
+        };
+
+        /**
+         * \brief Generic error interface.
+         *
+         * 
+         */
+
+
+        interface GenericError {
+
+                /**
+                 * \brief 16-bit error code.
+                 */
+                readonly attribute unsigned short code;
+        };
+                
+        /**
+         * \brief DeviceApiError error interface.
+         *
+         * The error codes must be in the range 10000-19999.
+         */
+
+        interface DeviceAPIError : GenericError {
+
+                /**
+                 * \brief Unknown error.
+                 */
+                const unsigned short UNKNOWN_ERROR           = 10000;
+
+                /**
+                 * \brief Invalid value was specified as input parameter.
+                 */
+                const unsigned short INVALID_ARGUMENT_ERROR  = 10001;
+
+                /**
+                 * \brief The searched value or object was not found.
+                 */
+                const unsigned short NOT_FOUND_ERROR         = 10002;
+
+                /**
+                 * \brief Operation is pending.
+                 */
+                const unsigned short PENDING_OPERATION_ERROR = 10003;
+
+                /**
+                 * \brief Input/Output error.
+                 */
+                const unsigned short IO_ERROR                = 10004;
+
+                /**
+                 * \brief Not supported error.
+                 */
+                const unsigned short NOT_SUPPORTED_ERROR     = 10005;
+        };
+
+        /**
+         * \brief Security error interface.
+         *
+         * The error codes must be in the range 20000-29999
+         */
+        interface SecurityError : GenericError {
+                const unsigned short PERMISSION_DENIED_ERROR = 20000;
+        };
+
+        /**
+         * \brief PendingOperation.
+         *
+         * Interface that is returned by asynchronous operations in order to
+         * provide a cancellation operation.
+         */
+        interface PendingOperation {
+                /**
+                 * \brief Call to cancel the underlying asynchronous operation.
+                 *
+                 * This call is always successful, i.e. the pending operation i.e.
+                 * either cancelled or one of the callback is called.
+                 *
+                 * \return &lt;em&gt;false&lt;/em&gt; if the cancellation did not succeed
+                 * either because the pending operation finished already or because
+                 * the cancellation cannot succeed due to technical limitations in
+                 * the underlying implementation. Consquently the pending operation 
+                 * completes and depending on the success or failure the appropriate
+                 * callbacks will be called.
+                 * &lt;em&gt;true&lt;/em&gt; if the cancellation did succeed. No callbacks will
+                 * be called by the cancelled pending operation.
+                 */
+                boolean cancel();
+        };
+
+        /**
+         * \brief BONDI root API.
+         * bondi root property exists in the global object
+         * \def-api-feature http://bondi.omtp.org/api/bondi.requestfeature
+         */
+        interface Bondi {
+                /**
+                 * \brief Requests a feature.
+                 *
+                 * This function requests a named feature
+                 * asynchronously and returns a pending operation object.
+                 * If it succeeds it calls the successCallback and passes in
+                 * the object of the requested feature. If it fails it calls
+                 * the errorCallback passing in a DeviceAPIError which provides 
+                 * an error message and error code indicating the nature of the error.
+                 *
+                 * If the requested feature binds itself to a root namespace
+                 * ( for example, &quot;bondi.pim.contact&quot;) this will happen prior to the
+                 * successCallback being invoked.
+                 *
+                 * \param successCallback  the success callback function
+                 * \param errorCallback    the error callback function
+                 * \param name             the feature name IRI
+                 *
+                 * \return PendingOperation enabling the requester to cancel this request.
+                 *
+                 * The errorCallback will receive one of the following errors:
+                 * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if a malformed
+                 * argument has been supplied or a required argument has been omitted.
+                 * \throw DeviceAPIError NOT_FOUND_ERROR if the requested feature could not be found.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR if the
+                 * requested feature is not permitted to load/bind or that
+                 * access to a required device capability has been denied.
+                 * \throw DeviceAPIError UNKNOWN_ERROR if an error occurred and a pending
+                 * operation object can't be returned.
+                 */
+                PendingOperation requestFeature(in RequestFeatureSuccessCallback successCallback,
+                                                in ErrorCallback   errorCallback,
+                                                in DOMString       name)
+                        raises(DeviceAPIError, SecurityError);
+        };
+        interface BondiObject {
+                readonly attribute Bondi bondi; 
+        };
+        Window implements bondiObject;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesfilesystemwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,1038 @@
</span><ins>+/* 
+ * Licensed to OMTP Ltd. (OMTP) under one or more contributor license agreements. 
+ * See the NOTICE file distributed with this work for additional information regarding 
+ * copyright ownership. 
+ * 
+ * The Reference Implementation (save for such parts of the reference implementation made 
+ * available under separate terms and conditions) is made available under the terms of the 
+ * Apache License, version 2.0, subject to the condition that any &quot;Works&quot; and &quot;Derivative 
+ * Works&quot; used or distributed for commercial purposes must be and remain compliant with the
+ * BONDI specification as promulgated by OMTP in each release. Your implementation of the 
+ * Reference Implementation (whether object or source) must maintain these conditions, and 
+ * you must notify any recipient of this condition in a conspicuous way.
+ * 
+ * You may not use this BONDI Reference Implementation except in compliance with the License. 
+ * 
+ * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 or at 
+ * http://bondi.omtp.org/BONDI-LICENSE-2.0 
+ */
+
+/**
+ * \brief BONDI filesystem API.
+ *
+ * The BONDI filesystem API provides access to the filesystem of a device. The
+ * filesystem is abstractly represented as a collection of disjoint filesystem
+ * root locations each corresponding to some specific location in the device
+ * filesystem.  The filesystem API exposes the hierarchies below these root
+ * locations as a single virtual filesystem but provides no access to other
+ * parts of the device filesystem.
+ *
+ * The roots that are exposed are determined by the platform also by the
+ * context in which the filesystem API is invoked.
+ *
+ * Each root has a string name. Each file or directory within the virtual
+ * filesystem is addressed using a fully-qualified path of the form:
+ * &lt;em&gt;&amp;lt;root name&amp;gt;/&amp;lt;path&amp;gt;&lt;/em&gt; where &lt;em&gt;&amp;lt;rootname&amp;gt;&lt;/em&gt; is
+ * the name of the root and &lt;em&gt;&amp;lt;path&amp;gt;&lt;/em&gt; is the path to the file or
+ * directory relative to that root.
+ * 
+ * The list of the supported root locations can be retrieved by calling
+ * filesystem.getRootLocations().
+ *
+ * The default location for a specific type of file, if one exists, can be
+ * obtained by calling the filesystem.getDefaultLocation(...) method. A set of
+ * platform-independent symbolic names for media types is defined. The default
+ * location for a given file type may itself be a root, or some subdirectory of
+ * a root. Although the set of roots available on a device is
+ * platform-dependent, the getDefaultLocation(...) functionality can be used to
+ * ensure that web applications can be written in a platform-independent way.
+ *
+ * In order to access specific locations which are prefixed with a value
+ * retrieved by filesystem.getDefaultLocation or some root location returned by
+ * filesystem.getRootLocations a File handle must be retrieved using the
+ * filesystem.resolve call.
+ *
+ * A File handle represents either a file or a directory. If it is a file the
+ * isFile attribute will be &lt;em&gt;true&lt;/em&gt;, otherwise the isDirectory attribute
+ * will be &lt;em&gt;true&lt;/em&gt;. A file can be opened for reading and writing, using a
+ * FileStream handle. A directory can be used to list its contents which is a
+ * list of files and sub-directories. There is a resolve method on directories
+ * as well in order to resolve files or sub-directories more conveniently than
+ * processing directory listings.
+ *
+ * The &quot;/&quot; character is used as the (path) component separator.
+ * The use of &quot;.&quot; or &quot;..&quot; in location components is not required to be
+ * supported.
+ *
+ * All path characters need to be &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt; encoded.
+ *
+ * \code
+ *         function errorCB(err) {
+ *                 alert(&quot;BONDI filesystem API couldn't be requested: &quot; + err.message);
+ *         }
+ *
+ *         function successCB() {
+ *                 var docLocation = bondi.filesystem.getDefaultLocation(&quot;documents&quot;);
+ *                 var docDir = bondi.filesystem.resolve(docLocation);
+ *                 var docFiles = docDir.listFiles();
+ *                 for(var i = 0; i &amp;lt; docFiles.length; i++) {
+ *                         // displays name of each image file in image directory
+ *                         alert(docFiles[i].name);
+ *                 }
+ *                 var testFile = docDir.createFile(&quot;test.txt&quot;);
+ *                 var out = testFile.open(&quot;w&quot;, &quot;UTF-8&quot;);
+ *                 // writes Hello World to test.txt
+ *                 out.write(&quot;Hello World&quot;);
+ *                 out.close();
+ *         }
+ *
+ *         bondi.requestFeature(successCB, errorCB, &quot;filesystem&quot;);
+ * \endcode
+ * 
+ * \def-api-feature http://bondi.omtp.org/api/filesystem.read
+ * \brief Filesystem read operations, including reading directory listings,
+ *        file contents and resolving root locations.
+ * \device-cap io.file.read
+ *
+ * \def-api-feature http://bondi.omtp.org/api/filesystem.write
+ * \brief Filesystem write operations, including creating files/directories,
+ *        writing to files, deleting files/directories, moving and copying
+ *        files.
+ * \device-cap io.file.write
+ * 
+ * \def-api-feature-set http://bondi.omtp.org/api/filesystem
+ * \brief All the FileSystem features
+ * \api-feature http://bondi.omtp.org/api/filesystem.read
+ * \api-feature http://bondi.omtp.org/api/filesystem.write
+ *
+ * \def-device-cap io.file.read
+ * \brief Read directory or file
+ * \param name Name of directory or file, in virtual filesystem,
+ * e.g. rootlocation/filename
+ *
+ * \def-device-cap io.file.write
+ * \brief Write directory or file
+ * \param name Name of directory or file, in virtual filesystem,
+ * e.g. rootlocation/filename
+ *
+ * \author Paddy Byers &amp;lt;paddy@aplixcorp.com&amp;gt;
+ * \author Anselm R Garbe &amp;lt;anselm@aplixcorp.com&amp;gt;
+ * \version 1.1
+ */
+module filesystem {
+
+        /**
+         * \brief Array of File handles.
+         *
+         * This array type is returned when directory listings are requested.
+         */
+        typedef sequence&lt;File&gt; FileArray;
+
+        /**
+         * \brief File system specific success callback.
+         *
+         * This callback interface specifies a success callback with a function
+         * taking a File object as input argument. It is used in asynchronous
+         * operations such as copying, moving and deleting files.
+         */
+        [Callback=FunctionOnly, NoInterfaceObject] interface FileSystemSuccessCallback {
+           /**
+            * \brief Method invoked when the asynchronous call completes succesfully
+            *
+            * \param file The file resulting from the asynchronous call
+            */
+                void onSuccess(in File file);
+        };
+
+        /**
+         * \brief Manager class exposed as the filesystem modules API.
+         *
+         * This manager class exposes the filesystem base API, such as
+         * determining root and default locations, resolving a given location
+         * into a File Handle and registering filesystem listeners for
+         * filesystem events.
+         *
+         * \code
+         *         function errorCB(err) {
+         *                 alert(&quot;BONDI filesystem API couldn't be requested: &quot; + err.message);
+         *         }
+         *
+         *         function successCB() {
+         *                 var docLocation = bondi.filesystem.getDefaultLocation(&quot;documents&quot;);
+         *                 var docDir = bondi.filesystem.resolve(docLocation);
+         *                 var docFiles = docDir.listFiles();
+         *                 for(var i = 0; i &amp;lt; docFiles.length; i++) {
+         *                         // displays name of each image file in image directory
+         *                         alert(docFiles[i].name);
+         *                 }
+         *                 var testFile = docDir.createFile(&quot;test.txt&quot;);
+         *                 var out = testFile.open(&quot;w&quot;, &quot;UTF-8&quot;);
+         *                 // writes Hello World to test.txt
+         *                 out.write(&quot;Hello World&quot;);
+         *                 out.close();
+         *         }
+         *
+         *         bondi.requestFeature(successCB, errorCB, &quot;filesystem&quot;);
+         * \endcode
+         */
+        interface FileSystemManager {
+
+                /**
+                 * \brief Contains the platform-dependent maximum path length.
+                 *
+                 * Read-only.
+                 *
+                 * \code
+                 *         alert(bondi.filesystem.maxPathLength);
+                 * \endcode
+                 */
+                readonly attribute unsigned long maxPathLength;
+
+                /**
+                 * \brief Returns a default location path for the given arguments,
+                 * including the root location prefix.
+                 *
+                 * Optionally this method can be called with the space argument
+                 * specifying the minimum free disk space required.
+                 *
+                 * This function resolves location specifiers to location paths.
+                 * The following location specifiers are supported:
+                 * \n &quot;wgt:package&quot; the widget package location
+                 * \n &quot;wgt:private&quot; the widgets private storage
+                 * \n &quot;wgt:public&quot;  the widgets public storage
+                 * \n &quot;wgt:temp&quot;    the widgets temporary storage
+                 * \n &quot;documents&quot;   the documents location,
+                 *                    e.g. the &quot;My Documents&quot; directory on some systems
+                 * \n &quot;images&quot;      the images location,
+                 *                    e.g. the &quot;My Pictures&quot; directory on some systems
+                 * \n &quot;videos&quot;      the videos location,
+                 *                    e.g. the &quot;My Videos&quot; directory on some systems
+                 * \n &quot;temp&quot;        the temporary storage,
+                 *                    e.g resolving to &quot;Temp&quot;
+                 * \n &quot;sdcard&quot;      the sdcard storage, if any
+                 *
+                 * \code
+                 *         var wgtLocation = bondi.filesystem.getDefaultLocation('wgt:package');
+                 * \endcode
+                 *
+                 * \param specifier    the location specifier, see above for supported specifiers.
+                 * \param minFreeSpace optional, minimum required free disk space in bytes for
+                 *                     this location, &lt;em&gt;0&lt;/em&gt; (default) means no limitation
+                 * \return the location as a string or &lt;em&gt;null&lt;/em&gt; if there
+                 *         is no location for the given specifier or if there is not
+                 *         enough space left for the requested space in bytes.
+                 * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if the
+                 *        specifier or space arguments are invalid
+                 */
+                DOMString getDefaultLocation(in DOMString specifier, in unsigned long minFreeSpace)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Returns all root locations.
+                 *
+                 * The root locations are symbolic names for filesystem
+                 * locations which are accessible and supported by the
+                 * underlying platform.
+                 *
+                 * Usually the following root locations will be supported:
+                 * \n &quot;documents&quot; represents &quot;My Documents&quot; on some platforms
+                 * \n &quot;images&quot;    represents &quot;My Pictures&quot; on some platforms
+                 * \n &quot;videos&quot;    represents &quot;My Videos&quot; on some platforms
+                 * \n &quot;temp&quot;      represents &quot;tmp&quot; on some platforms
+                 * \n &quot;sdcard&quot;    represents the sdcard on some platforms
+                 *
+                 * See also the getDefaultLocation method.
+                 *
+                 * \code
+                 *         var locations = bondi.filesystem.getRootLocations();
+                 *         for(var i = 0; i &amp;lt; locations.length; i++) {
+                 *                 // locations[i] is a resolvable root location
+                 *         }
+                 * \endcode
+                 *
+                 * \return string array of root locations.
+                 */
+                StringArray getRootLocations();
+
+                /**
+                 * \brief Resolves a location to a File handle.
+                 *
+                 * Validates and resolves the given location to a File handle
+                 * and returns a handle. A valid location is prefixed with a
+                 * valid root or default location and must address an existing
+                 * and accessible file.  
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.read
+                 *
+                 * \code
+                 *         var location = bondi.filesystem.getDefaultLocation(&quot;temp&quot;);
+                 *         var temp = bondi.filesystem.resolve(location);
+                 *         var documents = bondi.filesystem.getDefaultLocation(&quot;documents&quot;);
+                 *         var mydoc = bondi.filesystem.resolve(documents + &quot;/data/2009/mydoc.txt&quot;);
+                 * \endcode
+                 *
+                 * \param location the location to resolve. Must be absolute
+                 *        prefixed by a valid root or default location.
+                 * \return the resolved file object.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if invalid location was given.
+                 */
+                File resolve(in DOMString location)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Registers a filesystem event listener.
+                 *
+                 * Filesystem event listeners are used in order to retrieve
+                 * notifications if root or default locations such as storage
+                 * cards are mounted/unmounted into/from the device filesystem.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.read
+                 *
+                 * \code
+                 *         var listener = { mountEvent: function(location) { alert('mounted ' + location); },
+                 *                          unmountEvent: function(location) { alert('unmounted ' + location); };
+                 *         bondi.filesystem.registerEventListener(listener);
+                 * \endcode
+                 *
+                 * \param listener the listener interface implementation
+                 * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if the given listener
+                 *        is invalid or not a listener.
+                 */
+                void registerEventListener(in FileSystemListener listener)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Unregisters a filesystem event listener.
+                 *
+                 * \code
+                 *         bondi.filesystem.unregisterEventListener(listener);
+                 * \endcode
+                 *
+                 * \param listener the listener interface implementation
+                 * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if the given listener
+                 *        is invalid or not a listener.
+                 */
+                void unregisterEventListener(in FileSystemListener listener)
+                        raises(DeviceAPIError);
+        };
+
+        /**
+         * \brief Filesystem event listener class.
+         *
+         * This listener implements two methods to retrieve mount and unmount
+         * notifications if root or default locations on a storage card get
+         * available or unavailable.
+         *
+         * \code
+         *         var fsEventImpl = {
+         *                 mountEvent: function(location) {
+         *                         // location has been mounted
+         *                 },
+         *                 unmountEvent: function(location) {
+         *                         // location has been unmounted
+         *                 }
+         *         };
+         * \endcode
+         */
+        interface FileSystemListener {
+
+                /**
+                 * \brief Called when a new root location gets available.
+                 *
+                 * A new location could be a storage card for example.
+                 *
+                 * \param location the newly available location
+                 */
+                void mountEvent(in DOMString location);
+
+                /**
+                 * \brief Called when a location gets unavailable.
+                 *
+                 * Such a location could be a storage card for example.
+                 *
+                 * \param location the location which is becoming unavailable
+                 */
+                void unmountEvent(in DOMString location);
+        };
+
+        /**
+         * \brief File class.
+         *
+         * This interface represents the file abstraction in use. A file handle
+         * can address files or directories.  A file handle represents a file
+         * if the isFile property is &lt;em&gt;true&lt;/em&gt;, otherwise it represents a
+         * directory.
+         *
+         * A file handle representing a file can be opened for I/O operations
+         * such as reading and writing.
+         *
+         * A file handle representing a directory can list all files in the
+         * current directory.
+         *
+         * \code
+         *
+         *        // list directory contents
+         *         var files = dir.listFiles();
+         *         for(var i = 0; i &amp;lt; files.length; i++) {
+         *                 // alerts each name of dir's contents
+         *                 alert(files[i].name);
+         *         }
+         * 
+         *         // opens a file for writing
+         *         var file = dir.createFile(&quot;test.txt&quot;);
+         *         var out  = file.open(&quot;w&quot;, &quot;UTF-8&quot;);
+         *         // writes Hello World to test.txt
+         *         out.write(&quot;Hello World&quot;);
+         *         out.close();
+         * \endcode
+         */
+        interface File {
+
+                /**
+                 * \brief Parent directory handle.
+                 *
+                 * Read-only.
+                 *
+                 * &lt;em&gt;null&lt;/em&gt; if there is no parent directory.
+                 *
+                 * If there is no parent directory, this represents a root location.
+                 *
+                 * \code
+                 *         var parent = file.parent;
+                 *         if(parent != null) {
+                 *                 // parent directory handle
+                 *         }
+                 * \endcode
+                 */
+                readonly attribute File parent;
+
+                /**
+                 * \brief File/directory access state in the filesystem.
+                 *
+                 * Read-only.
+                 *
+                 * &lt;em&gt;false&lt;/em&gt; if there is write access.
+                 *
+                 * This attribute represents the actual state of a
+                 * file/directory in the filesystem. It does not check if the
+                 * accessor has io.file.write permission.
+                 *
+                 * \code
+                 *         if(file.readOnly) {
+                 *                 // file cannot be written
+                 *         }
+                 * \endcode
+                 */
+                readonly attribute boolean readOnly;
+
+                /**
+                 * \brief File type.
+                 *
+                 * Read-only.
+                 *
+                 * &lt;em&gt;true&lt;/em&gt; if this handle is a file.
+                 * &lt;em&gt;false&lt;/em&gt; if this handle is a directory.
+                 *
+                 * \code
+                 *         if(file.isFile) {
+                 *                 // is a file
+                 *         }
+                 * \endcode
+                 */
+                readonly attribute boolean isFile;
+
+                /**
+                 * \brief File type.
+                 *
+                 * Read-only.
+                 *
+                 * &lt;em&gt;true&lt;/em&gt; if this handle is a directory.
+                 * &lt;em&gt;false&lt;/em&gt; if this handle is a file.
+                 *
+                 * \code
+                 *         if(file.isDirectory) {
+                 *                 // is a directory
+                 *         }
+                 * \endcode
+                 */
+                readonly attribute boolean isDirectory;
+
+                /**
+                 * \brief Creation timestamp.
+                 *
+                 * Read-only.
+                 *
+                 * The creation timestamp of this file. This is the timestamp
+                 * when the file was first created in the filesystem. This is
+                 * equivalent to the timestamp when a call to createFile()
+                 * succeeds.
+                 *
+                 * It is unspecified and platform-dependent if the creation
+                 * timestamp changes when a file is moved.
+                 *
+                 * \code
+                 *         alert(file.created); // displays the creation timestamp
+                 * \endcode
+                 *
+                 */
+                readonly attribute Date created;
+
+                /**
+                 * \brief Modification timestamp.
+                 *
+                 * Read-only.
+                 *
+                 * The modification timestamp of this file. This is the timestamp
+                 * of the most recent modification to the file, usually when the last
+                 * write operation succeeded. Opening a file for reading does not change
+                 * the modification timestamp.
+                 *
+                 * \code
+                 *         alert(file.modified); // displays the modification timestamp
+                 * \endcode
+                 *
+                 */
+                readonly attribute Date modified;
+
+                /**
+                 * \brief Path of this file, excluding the file name.
+                 *
+                 * Read-only.
+                 *
+                 * If the file path is &lt;em&gt;/baz/foo.bar&lt;/em&gt;, then
+                 * the path is &lt;em&gt;/baz/&lt;/em&gt;.  
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \code
+                 *         alert(file.path); // should be /baz/ if the file is /baz/foo.bar
+                 * \endcode
+                 */
+                readonly attribute DOMString path;
+
+                /**
+                 * \brief File name, excluding any path components.
+                 *
+                 * Read-only.
+                 *
+                 * Assumed the file path is &lt;em&gt;/baz/foo.bar&lt;/em&gt;, then
+                 * the file name is &lt;em&gt;foo.bar&lt;/em&gt;.
+                 *
+                 * The encoding of file names is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \code
+                 *         alert(file.name); // should be foo.bar if the file path is /baz/foo.bar
+                 * \endcode
+                 */
+                readonly attribute DOMString name;
+
+                /**
+                 * \brief Absolute path of this file.
+                 *
+                 * Read-only.
+                 *
+                 * Assumed the file path is &lt;em&gt;/baz/foo.bar&lt;/em&gt;, then this is the absolute path.
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \code
+                 *         alert(file.absolutePath); // should be /baz/foo.bar if the file is /baz/foo.bar
+                 * \endcode
+                 */
+                readonly attribute DOMString absolutePath;
+
+                /**
+                 * \brief Size in bytes of this file.
+                 *
+                 * Read-only.
+                 *
+                 * If it is attempted to read this attribute on a directory,
+                 * &lt;em&gt;undefined&lt;/em&gt; is returned.
+                 *
+                 * \code
+                 *         alert(file.fileSize); // displays the file size
+                 * \endcode
+                 */
+                readonly attribute unsigned long fileSize;
+
+                /**
+                 * \brief Files metadata.
+                 *
+                 * The actual map contents are implementation dependent.
+                 *
+                 * \code
+                 *         // should display the file author, if supported by the
+                 *         // platform, undefined otherwise
+                 *         alert(file.metadata.author);
+                 * \endcode
+                 */
+                readonly attribute Map metadata;
+
+                /**
+                 * \brief Returns list of all files of this directory.
+                 *
+                 * The list of files contains directories and files, it does
+                 * not contain the directories &quot;.&quot; and &quot;..&quot;.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.read
+                 *
+                 * \code
+                 *         var files = dir.listFiles();
+                 *         for(var i = 0; i &amp;lt; files.length; i++) {
+                 *                 // files[i] iterate over all files of this directory
+                 *         }
+                 * \endcode
+                 *
+                 * \return array of contents of this directory.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if this is not a directory.
+                 */
+                FileArray listFiles()
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Opens the file in the given mode supporting the given
+                 * encoding.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.read
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         // opens file for reading
+                 *         var in = file.open(&quot;r&quot;, &quot;UTF-8&quot;);
+                 * \endcode
+                 *
+                 * \param mode the mode for opening a file
+                 * \n &quot;r&quot; for reading
+                 * \n &quot;a&quot; for appending
+                 * \n &quot;w&quot; for [over]writing
+                 * \param encoding the encoding for read/write operations on the file,
+                 *                   supported encodings are:
+                 * \n &quot;&lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;&quot; default encoding
+                 * \n &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/ISO/IEC_8859-1&quot;&gt;ISO8859-1&lt;/a&gt;&quot; latin1 encoding
+                 * \return file stream handle to read/write from/to.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError INVALID_ARGUMENT_ERROR if invalid mode
+                 *        or unsupported encoding is supplied.
+                 * \throw DeviceAPIError IO_ERROR if this is not a file.
+                 */
+                FileStream open(in DOMString mode, in DOMString encoding)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Copies this file.
+                 *
+                 * The copy will be created in the given path. If this function
+                 * fails and the error callback is called, it will pass an
+                 * DeviceAPIError IO_ERROR to the callback.
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         // copies this file to /temp/file.copy
+                 *         var op = file.copyTo(function(copiedFile) { alert(&quot;file copied&quot;); }, null, &quot;/temp/file.copy&quot;, false);
+                 * \endcode
+                 *
+                 * \param successCallback called when the file has been copied.
+                 * \param errorCallback called if an error occured.
+                 * \param filePath the new file path, [a-Z0-9_- /]+ are allowed 
+                 * \param overwrite &lt;em&gt;true&lt;/em&gt; enforces overwriting an existing file.
+                 * \return PendingOperation enabling the requester to cancel this request.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if it is attempted to move to a directory.
+                 * \throw DeviceAPIError IO_ERROR if overwrite is &lt;em&gt;false&lt;/em&gt; and target file exists.
+                 * \throw DeviceAPIError IO_ERROR if any characters in the path are not supported.
+                 * \throw DeviceAPIError IO_ERROR if the file cannot be copied.
+                 */
+                PendingOperation copyTo(in FileSystemSuccessCallback successCallback,
+                                        in ErrorCallback errorCallback,
+                                        in DOMString filePath,
+                                        in boolean overwrite)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Moves this file.
+                 *
+                 * The file will be moved atomically to the given path. This is
+                 * different to copyTo and deleting the old file, because this
+                 * operation does not need extra disk space on certain platforms.
+                 * If this function fails and the error callback is called, it
+                 * will pass an DeviceAPIError IO_ERROR to the callback.
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         // moves this file to /temp/file.move
+                 *         var op = file.moveTo(function(movedFile) { file = movedFile; }, null, &quot;/temp/file.move&quot;);
+                 * \endcode
+                 *
+                 * \param successCallback called when the file has been copied.
+                 * \param errorCallback called if an error occured.
+                 * \param filePath the new file name, [a-Z0-9_- /]+ are allowed
+                 * \param overwrite &lt;em&gt;true&lt;/em&gt; enforces overwriting an existing file.
+                 * \return PendingOperation enabling the requester to cancel this request.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if it is attempted to move to a directory.
+                 * \throw DeviceAPIError IO_ERROR if overwrite is &lt;em&gt;false&lt;/em&gt; and target file exists.
+                 * \throw DeviceAPIError IO_ERROR if any characters in the path are not supported.
+                 * \throw DeviceAPIError IO_ERROR if the file cannot be moved.
+                 */
+                PendingOperation moveTo(in FileSystemSuccessCallback successCallback,
+                                        in ErrorCallback errorCallback,
+                                        in DOMString filePath,
+                                        in boolean overwrite)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Creates a directory.
+                 *
+                 * The new directory will be created relatively to the current
+                 * directory this operation is performed on. It will attempt to
+                 * create all necessary sub-directories as well. The use of &quot;.&quot;
+                 * or &quot;..&quot; in path components is not supported. If the
+                 * bottom-most directory being created already exists this
+                 * method will throw an IO_ERROR.
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         var newDir = dir.createDirectory(&quot;newDir&quot;);
+                 *         var anotherNewDir = dir.createDirectory(&quot;newDir1/subNewDir1&quot;);
+                 * \endcode
+                 *
+                 * \param dirPath the new directory path, it should only contain
+                 *        characters supported by the underlying filesystem.
+                 * \return file handle of the new directory
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if this is not a directory.
+                 * \throw DeviceAPIError IO_ERROR if any path component does not exist.
+                 * \throw DeviceAPIError IO_ERROR if a file with the same name exists.
+                 * \throw DeviceAPIError IO_ERROR if any characters in the path are not supported.
+                 * \throw DeviceAPIError IO_ERROR if the directory cannot be created.
+                 */
+                File createDirectory(in DOMString dirPath)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Creates a new empty file.
+                 *
+                 * The new empty file is created in the given path relatively
+                 * to the current directory the operation is performed on.  The
+                 * use of &quot;.&quot; or &quot;..&quot; in path components is not supported.  If
+                 * the bottom-most file being created already exists this
+                 * method will throw an IO_ERROR.  If any path component does
+                 * not exist this method will throw an IO_ERROR.
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         var newFile = dir.createFile(&quot;newFile&quot;);
+                 * \endcode
+                 *
+                 * \param filePath the new file path, it should only contain
+                 *        characters supported by the underlying filesystem.
+                 * \return file handle of the new empty file
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if this is not a directory.
+                 * \throw DeviceAPIError IO_ERROR if any path component does not exist.
+                 * \throw DeviceAPIError IO_ERROR if the file already exists.
+                 * \throw DeviceAPIError IO_ERROR if any characters in the path are not supported.
+                 * \throw DeviceAPIError IO_ERROR if the file cannot be created.
+                 */
+                File createFile(in DOMString filePath)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Resolves an existing file or directory relatively to
+                 * the current directory this operation is performed on; and
+                 * returns a file handle for it.
+                 * 
+                 * The filePath is not allowed to contain the &quot;.&quot; or &quot;..&quot; directories.
+                 *
+                 * The encoding of file paths is &lt;a href=&quot;http://www.ietf.org/rfc/rfc2279.txt&quot;&gt;UTF-8&lt;/a&gt;.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.read
+                 *
+                 * \code
+                 *         var hellofile = dir.resolve(&quot;foo/hello.txt&quot;);
+                 * \endcode
+                 *
+                 * \param filePath the relative file/directory path to resolve.
+                 * \return file handle of the file or &lt;em&gt;null&lt;/em&gt; if it cannot be resolved.
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if this is not a directory.
+                 * \throw DeviceAPIError IO_ERROR if any characters in the path are not supported.
+                 * \throw DeviceAPIError IO_ERROR if the file or directory cannot be resolved.
+                 */
+                File resolve(in DOMString filePath)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Deletes this directory.
+                 *
+                 * This function attempts to delete a directory or directory
+                 * tree synchronously and returns &lt;em&gt;true&lt;/em&gt; on success,
+                 * &lt;em&gt;false&lt;/em&gt; otherwise. It may throw an IO_ERROR if a
+                 * recursive deletion partially fails and any deleted data so
+                 * far cannot be recovered. This might happen due the lack of
+                 * filesystem permissions or if any directories or files are
+                 * openened by other processes.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         var fullPath = dir.fullPath;
+                 *         if(dir.deleteDirectory(true)) {
+                 *                 // subsequent accesses to dir will throw an error
+                 *                 alert(fullPath + ' deleted');
+                 *         }
+                 * \endcode
+                 *
+                 * \param recursive &lt;em&gt;true&lt;/em&gt; means a recursive deletion, this
+                 *        will destroy all data recursively, use with caution.
+                 * \return &lt;em&gt;true&lt;/em&gt; on success
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if this is a file.
+                 * \throw DeviceAPIError IO_ERROR if the directory is not empty and
+                 *        this operation is not performed recursively.
+                 * \throw DeviceAPIError IO_ERROR if the directory or any file or sub-directory cannot be deleted.
+                 */
+                boolean deleteDirectory(in boolean recursive)
+                        raises(SecurityError, DeviceAPIError);
+
+                /**
+                 * \brief Deletes this file.
+                 *
+                 * Returns &lt;em&gt;true&lt;/em&gt; on success, &lt;em&gt;false&lt;/em&gt; otherwise.
+                 *
+                 * \api-feature http://bondi.omtp.org/api/filesystem.write
+                 *
+                 * \code
+                 *         var fullPath = dir.fullPath;
+                 *         if(dir.deleteFile()) {
+                 *                 // subsequent accesses to dir will throw an error
+                 *                 alert(fullPath + ' deleted');
+                 *         }
+                 * \endcode
+                 *
+                 * \return &lt;em&gt;true&lt;/em&gt; on success
+                 * \throw SecurityError PERMISSION_DENIED_ERROR when
+                 *        access is denied by the security policy.
+                 * \throw DeviceAPIError IO_ERROR if this is a directory.
+                 * \throw DeviceAPIError IO_ERROR if the file cannot be deleted due
+                 *        the lack of filesystem permissions or if it is locked or
+                 *        opened by another process.
+                 */
+                boolean deleteFile()
+                        raises(SecurityError, DeviceAPIError);
+        };
+
+        /**
+         * \brief FileStream API.
+         *
+         * A FileStream represents a handle to a File opened for read and/or
+         * write operations.  Read and write operations are performed relative
+         * to a file pointer which represents the current position in the file.
+         * 
+         * A series of read/write methods are available that permit both binary and
+         * text to be processed.
+         *
+         * Once a file stream is closed, any operation attempted on this stream
+         * will result in a normal JavaScript error.
+         */
+        interface FileStream {
+
+                /**
+                 * \brief Indicates whether or not the current file pointer is at the end
+                 * of the file.
+                 * 
+                 * &lt;em&gt;true&lt;/em&gt; if the position is at the end of the current file stream.
+                 *
+                 * \code
+                 *         if(stream.eof) {
+                 *                 // file has been read completely
+                 *         }
+                 * \endcode
+                 */
+                readonly attribute boolean eof;
+
+                /**
+                 * \brief Get/set stream position for reads/writes.
+                 * 
+                 * The stream position is an offset of bytes from the start of
+                 * the file stream.  When invoking an operation that reads or
+                 * writes from the stream, the operation will take place from
+                 * the position in the position attribute.
+                 *
+                 * \code
+                 *         alert(stream.position); // displays current stream position
+                 *         // alters current stream position to the begin of the file,
+                 *         // like seek() in C
+                 *         stream.position = 0;
+                 * \endcode
+                 * \throw DeviceAPIError IO_ERROR if a position was given that is out of the stream range.
+                 */
+                attribute unsigned long position
+                        setraises(DeviceAPIError);
+
+                /**
+                 * \brief Returns the number of bytes that are available for
+                 * reading from the stream.
+                 *
+                 * The number of bytes available for reading is the maximum
+                 * amount of bytes that can be read in the next read operation.
+                 * 
+                 * -1 if eof is &lt;em&gt;true&lt;/em&gt;.
+                 *
+                 * \code
+                 *         alert(stream.bytesAvailable); // displays the available bytes to be read
+                 * \endcode
+                 */
+                readonly attribute unsigned long bytesAvailable;
+
+                /**
+                 * \brief Closes this FileStream.
+                 * 
+                 * Flushes any pending buffered writes and closes the File. Always succeeds.
+                 * Note that pending writes might not succeed.
+                 *
+                 * \code
+                 *         stream.close(); // closes this stream, no subsequent access to stream allowed
+                 * \endcode
+                 */
+                void close();
+
+                /**
+                 * \brief Reads the specified number of characters.
+                 *
+                 * Reads specified number of characters and returns them as string.
+                 * The resulting string length might be shorter than charCount if eof
+                 * is &lt;em&gt;true&lt;/em&gt;.
+                 *
+                 * \code
+                 *         var text = stream.read(0);
+                 *         stream.close();
+                 * \endcode
+                 *
+                 * \param charCount number of characters being read, if
+                 *                    &lt;em&gt;0&lt;/em&gt; it will read as long as bytes are available.
+                 * \return the result of read characters as a string.
+                 * \throw DeviceAPIError IO_ERROR if an error occurs during read.
+                 */
+                DOMString read(in unsigned long charCount)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Reads the specified number of bytes from this FileStream.
+                 *
+                 * If 0 is supplied it will read all available bytes in a
+                 * single read operation.
+                 *
+                 * \code
+                 *         // reads up to 256 bytes from the stream
+                 *         var raw = stream.readBytes(256);
+                 *         for(var i = 0; i &amp;lt; raw.length; i++) {
+                 *                 // raw[i] contains the i-th byte of the current data chunk
+                 *         }
+                 * \endcode
+                 *
+                 * \param byteCount number of bytes being read. Must not be &lt;em&gt;0&lt;/em&gt;.
+                 * \return the result of read bytes as a byte (or number) array.
+                 * \throw DeviceAPIError IO_ERROR if an error occurs during readBytes.
+                 */
+                ByteArray readBytes(in unsigned long byteCount)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Reads the specified number of bytes from this FileStream, encoding
+                 * the result in base64.
+                 *
+                 * If 0 is supplied it will read all available bytes in a
+                 * single read operation.
+                 *
+                 * \code
+                 *         // reads up to 256 bytes from the stream
+                 *         var base64 = stream.readBase64(256);
+                 * \endcode
+                 *
+                 * \param byteCount number of bytes being read. Must not be &lt;em&gt;0&lt;/em&gt;.
+                 * \return the result of read bytes as base64 encoding string.
+                 * \throw DeviceAPIError IO_ERROR if an error occurs during readBase64.
+                 */
+                DOMString readBase64(in unsigned long byteCount)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Writes the specified DOMString to this FileStream.
+                 *
+                 * \code
+                 *         var text = &quot;Hello world&quot;;
+                 *         stream.write(text);
+                 * \endcode
+                 *
+                 * \param stringData the actual string to be written.
+                 * \throw DeviceAPIError IO_ERROR if an error occurs during write.
+                 */
+                void write(in DOMString stringData)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Writes the specified bytes to this FileStream.
+                 *
+                 * \code
+                 *         var bytes = in.readBytes(256);
+                 *         out.writeBytes(bytes); // writes the bytes read from in to out
+                 * \endcode
+                 *
+                 * \param byteData the byte data array being written.
+                 * \throw DeviceAPIError IO_ERROR if an error occurs during writeBytes.
+                 */
+                void writeBytes(in ByteArray byteData)
+                        raises(DeviceAPIError);
+
+                /**
+                 * \brief Converts the specified base64 DOMString to bytes and writes the 
+                 * result to this FileStream.
+                 *
+                 * \code
+                 *         var base64 = in.readBase64(256);
+                 *         out.writeBase64(base64); // writes the base64 data read from in to out
+                 * \endcode
+                 *
+                 * \param base64Data the base64 data being written.
+                 * \throw DeviceAPIError IO_ERROR if an error occurs during writeBase64.
+                 */
+                void writeBase64(in DOMString base64Data)
+                        raises(DeviceAPIError);
+        };
+
+  /**
+   * \brief Specifies what is instantiated at feature request
+   * \def-instantiated
+   * \api-feature http://bondi.omtp.org/api/filesystem.read
+   * \api-feature http://bondi.omtp.org/api/filesystem.write
+   */
+        interface FileSystemManagerObject {
+                readonly attribute FileSystemManager fileSystemManager; 
+        };
+        bondi implements FileSystemManagerObject;
+
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesspectowidlxsl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- ====================================================================
+$Id$
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+XSLT stylesheet to extract Web IDL snippets from Web IDL spec. 
+===================================================================== --&gt;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&gt;
+&lt;xsl:output method=&quot;text&quot; encoding=&quot;utf-8&quot;/&gt;
+
+&lt;xsl:template match=&quot;code[@class='idl-code']&quot;&gt;
+    &lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;xsl:text&gt;
+&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=&quot;text()&quot;/&gt;
+
+&lt;/xsl:stylesheet&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesspectowidlxslorig"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl.orig (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl.orig                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl.orig        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!--====================================================================
+$Id$
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+XSLT stylesheet to extract Web IDL snippets from Web IDL spec. 
+=====================================================================--&gt;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&gt;
+&lt;xsl:output method=&quot;text&quot; encoding=&quot;utf-8&quot;/&gt;
+
+&lt;xsl:template match=&quot;code[@class='idl-code']&quot;&gt;
+    &lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;xsl:text&gt;
+&lt;/xsl:text&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=&quot;text()&quot;/&gt;
+
+&lt;/xsl:stylesheet&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexamplesw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,23 @@
</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/resources/webidl2/test/widlproc/examples/Makefile
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/README
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/bondi.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/filesystem.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/spectowidl.xsl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocexampleswidlhtmlcss"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/examples/widlhtml.css        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+body {
+  padding: 2em;
+  margin: 0;
+  font-family: sans-serif;
+  color: black;
+  background: white;
+  background-position: top left;
+  background-attachment: fixed;
+  background-repeat: no-repeat;
+}
+:link { color: #00C; background: transparent }
+:visited { color: #609; background: transparent }
+a:active { color: #C00; background: transparent }
+a:link img, a:visited img { border-style: none } /* no border on img links */
+
+h1, h2, h3, h4, h5, h6 { text-align: left }
+/* background should be transparent, but WebTV has a bug */
+h1, h2, h3 { color: #009393; background: white }
+h1 { font: 170% sans-serif }
+h2 { font: 140% sans-serif }
+h3 { font: 120% sans-serif }
+h4 { font: bold 100% sans-serif }
+h5 { font: italic 100% sans-serif }
+h6 { font: small-caps 100% sans-serif; margin-bottom: 0 }
+
+.hide { display: none }
+
+code { font-size: 120% }
+
+ul.toc, ol.toc, ul.authors {
+  list-style: none;
+}
+
+.hide { display: none }
+
+div.head { margin-bottom: 1em }
+div.head h1 { margin-top: 2em; clear: both }
+div.head table { margin-left: 2em; margin-top: 2em }
+div.constraint, div.issue, div.note, div.notice     { margin-left: 2em; }
+div.exampleInner pre { margin-left: 1em; margin-top: 0em; margin-bottom: 0em}
+div.exampleOuter {border: 4px double gray; margin: 0em; padding: 0em}
+div.exampleInner { background-color: #d5dee3;
+                        border-top-width: 4px;
+                          border-top-style: double;
+                          border-top-color: #d3d3d3;
+                          border-bottom-width: 4px;
+                          border-bottom-style: double;
+                          border-bottom-color: #d3d3d3;
+                          padding: 4px; margin: 0em }
+div.exampleWrapper { margin: 4px }
+div.exampleHeader { font-weight: bold; margin: 4px}
+div.term { font: 100% sans-serif; color:#000000; font-weight: bold; line-height: 60%}   
+div.list { font: 100% sans-serif; color:#000000; font-weight: normal; line-height: 60%} 
+
+.optional {text-decoration: line-through; display: none;}
+
+.copyright,.legalnotice { font-size: small }
+.copyright small { font-size: small }
+
+@media screen {  /* hide from IE3 */
+a[href]:hover { background: #ffa }
+}
+
+ol.enumar      { list-style-type: decimal; }
+ol.enumla      { list-style-type: lower-alpha; }
+ol.enumlr      { list-style-type: lower-roman; }
+ol.enumua      { list-style-type: upper-alpha; }
+ol.enumur      { list-style-type: upper-roman; }
+
+/* BONDI additions */
+
+.toc {
+    list-style-type: none;
+}
+
+pre {
+  background-color:#D5DEE3;
+  overflow: auto;
+  padding: 1em;
+}
+
+.examplecode {
+    background-color: #EEE;
+}
+
+.def-api-feature-set dt, .def-api-feature dt, dt .def-device-cap, dt.const code { font: bold 100% sans-serif; }
+dt.attribute code, dt.method code { font: italic 100% sans-serif; }
+
+.def-device-caps dd { margin-bottom: 2em }
+
+dt.method { margin-top: 2em }
+
+.summary td {
+    text-align: left;
+    background-color: #BBDDDD;
+    color: inherit;
+    font-family: monospace;
+    white-space:pre;
+    padding: .3em 1em .3em 1em;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrccommentc"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,1827 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#include &lt;assert.h&gt;
+#include &lt;string.h&gt;
+#include &lt;stdio.h&gt;
+
+#include &quot;comment.h&quot;
+#include &quot;entities.h&quot;
+#include &quot;lex.h&quot;
+#include &quot;misc.h&quot;
+#include &quot;node.h&quot;
+#include &quot;os.h&quot;
+#include &quot;process.h&quot;
+
+/* struct cnode : a node in the comment parse tree */
+struct cnode {
+    struct cnode *next;
+    struct cnode *children;
+    struct cnode *parent;
+    const struct cnodefuncs *funcs;
+    const char *attrtext;
+    const char *filename;
+    unsigned int linenum;
+};
+
+struct cnodefuncs {
+    int indesc; /* non-zero if it outputs its own xml element that does
+                      not want to be inside &lt;description&gt; */
+    int needpara; /* non-zero if text must be in a para node that is a child
+                     of this one */
+    int (*askend)(struct cnode *cnode, const struct cnodefuncs *type);
+    void (*end)(struct cnode *cnode);
+    void (*output)(struct cnode *cnode, unsigned int indent);
+};
+
+struct paramcnode {
+    struct cnode cn;
+    int inout;
+    char name[1];
+};
+
+/* struct comment : a doxygen comment */
+struct comment {
+    struct comment *next;
+    struct node *node;
+    unsigned int type;
+    const char *filename;
+    unsigned int linenum;
+    struct cnode root;
+    int back; /* Whether the comment refers back rather than forward. */
+    char *text;
+};
+
+
+static struct node *lastidentifier;
+static struct comment *comments;
+static int incode, inhtmlblock;
+static struct comment *curcomment;
+
+/***********************************************************************
+ * htmleldescs : table of recnogized HTML elements
+ */
+#define HTMLEL_EMPTY 1
+#define HTMLEL_INLINE 2
+#define HTMLEL_BLOCK 4
+#define HTMLEL_AUTOCLOSE 8
+#define HTMLEL_LI 0x10
+#define HTMLEL_DLCONTENTS 0x20
+#define HTMLEL_TABLECONTENTS 0x40
+#define HTMLEL_TRCONTENTS 0x80
+
+#define HTMLEL_FLOW (HTMLEL_BLOCK | HTMLEL_INLINE)
+
+struct htmleldesc {
+    unsigned int namelen;
+    const char *name;
+    unsigned int flags;
+    unsigned int content;
+};
+
+static const struct htmleldesc htmleldescs[] = {
+    { 1, &quot;a&quot;, HTMLEL_INLINE, 0 },
+    { 1, &quot;b&quot;, HTMLEL_INLINE, 0 },
+    { 2, &quot;br&quot;, HTMLEL_INLINE, HTMLEL_EMPTY },
+    { 3, &quot;img&quot;, HTMLEL_INLINE, HTMLEL_EMPTY },
+    { 2, &quot;dd&quot;, HTMLEL_DLCONTENTS, HTMLEL_FLOW },
+    { 2, &quot;dl&quot;, HTMLEL_BLOCK, HTMLEL_DLCONTENTS },
+    { 2, &quot;dt&quot;, HTMLEL_DLCONTENTS, HTMLEL_INLINE },
+    { 2, &quot;em&quot;, HTMLEL_INLINE, 0 },
+    { 2, &quot;li&quot;, HTMLEL_LI, HTMLEL_FLOW },
+    { 2, &quot;ol&quot;, HTMLEL_BLOCK, HTMLEL_LI },
+    { 1, &quot;p&quot;, HTMLEL_BLOCK, HTMLEL_INLINE },
+    { 2, &quot;td&quot;, HTMLEL_TRCONTENTS | HTMLEL_AUTOCLOSE, HTMLEL_FLOW },
+    { 2, &quot;th&quot;, HTMLEL_TRCONTENTS | HTMLEL_AUTOCLOSE, HTMLEL_FLOW },
+    { 2, &quot;tr&quot;, HTMLEL_TABLECONTENTS | HTMLEL_AUTOCLOSE, HTMLEL_TRCONTENTS },
+    { 5, &quot;table&quot;, HTMLEL_BLOCK, HTMLEL_TABLECONTENTS },
+    { 2, &quot;ul&quot;, HTMLEL_BLOCK, HTMLEL_LI },
+    { 0, 0, 0, 0 }
+};
+#define HTMLELDESC_B (htmleldescs + 1)
+#define HTMLELDESC_BR (htmleldescs + 2)
+
+/***********************************************************************
+ * addcomment : add a comment to the list of comments if it has doxygen syntax
+ *
+ * Enter:   tok struct
+ */
+void
+addcomment(struct tok *tok)
+{
+    if (tok-&gt;len &gt;= 1 &amp;&amp; (tok-&gt;start[0] == '!'
+        || (tok-&gt;type == TOK_BLOCKCOMMENT &amp;&amp; tok-&gt;start[0] == '*')
+        || (tok-&gt;type == TOK_INLINECOMMENT &amp;&amp; tok-&gt;start[0] == '/')))
+    {
+        struct comment *comment;
+        comment = memalloc(sizeof(struct comment));
+        comment-&gt;text = memalloc(tok-&gt;len + 1);
+        memcpy(comment-&gt;text, tok-&gt;start, tok-&gt;len);
+        comment-&gt;text[tok-&gt;len] = 0;
+        comment-&gt;type = tok-&gt;type;
+        comment-&gt;filename = tok-&gt;filename;
+        comment-&gt;linenum = tok-&gt;linenum;
+        comment-&gt;node = 0;
+        comment-&gt;back = 0;
+        if (comment-&gt;text[1] == '&lt;') {
+            comment-&gt;back = 1;
+            if (!lastidentifier) {
+                locerrorexit(comment-&gt;filename, comment-&gt;linenum,
+                    &quot;no identifier to attach doxygen comment to&quot;);
+            }
+            comment-&gt;node = lastidentifier;
+        }
+        comment-&gt;next = comments;
+        comments = comment;
+    }
+}
+
+/***********************************************************************
+ * setcommentnode : set parse node to attach comments to
+ *
+ * Enter:   node2 = parse node for identifier
+ */
+void
+setcommentnode(struct node *node2)
+{
+    struct comment *comment = comments;
+    while (comment &amp;&amp; !comment-&gt;node) {
+        comment-&gt;node = node2;
+        comment = comment-&gt;next;
+    }
+    lastidentifier = node2;
+}
+
+/***********************************************************************
+ * joininlinecomments : join adjacent inline comments
+ *
+ * Enter:   comment = list of comment structs
+ *
+ * Return:  new list of comment structs
+ *
+ * This function also discards any single inline comment that does not
+ * refer back.
+ */
+static struct comment *
+joininlinecomments(struct comment *comments)
+{
+    struct comment **pcomment;
+    pcomment = &amp;comments;
+    for (;;) {
+        struct comment *comment;
+        comment = *pcomment;
+        if (!comment)
+            break;
+        if (comment-&gt;type != TOK_INLINECOMMENT) {
+            /* Keep block comment as is. */
+            pcomment = &amp;comment-&gt;next;
+        } else if (!comment-&gt;back &amp;&amp; (!comment-&gt;next
+                || comment-&gt;next-&gt;type != TOK_INLINECOMMENT
+                || comment-&gt;next-&gt;filename != comment-&gt;filename
+                || comment-&gt;next-&gt;linenum != comment-&gt;linenum + 1))
+        {
+            /* Discard single // comment that does not refer back. */
+            *pcomment = comment-&gt;next;
+
+        } else {
+            /* Find sequence of adjacent // comments (adjacent lines,
+             * referring to same node) and join them. We do this in two
+             * passes, one to count the length of the comment and one
+             * to join. Note that the list is still in reverse order,
+             * so we expect the line number to decrease by 1 each time. */
+            struct comment *newcomment = 0, *comment2;
+            const char *filename = comment-&gt;filename;
+            unsigned int linenum = comment-&gt;linenum;
+            for (;;) {
+                char *wp = newcomment-&gt;text;
+                comment2 = comment;
+                do {
+                    unsigned int len = strlen(comment2-&gt;text);
+                    if (newcomment)
+                        memcpy(wp, comment2-&gt;text, len);
+                    wp += len;
+                    linenum--;
+                    comment2 = comment2-&gt;next;
+                } while (comment2 &amp;&amp; comment2-&gt;filename == filename
+                            &amp;&amp; comment2-&gt;linenum == linenum
+                            &amp;&amp; comment2-&gt;node == comment-&gt;node);
+                /* Finished a pass. */
+                if (newcomment) {
+                    *wp = 0;
+                    break;
+                }
+                newcomment = memalloc(sizeof(struct comment)
+                                + wp - newcomment-&gt;text);
+                newcomment-&gt;node = comment-&gt;node;
+                newcomment-&gt;type = comment-&gt;type;
+                newcomment-&gt;filename = filename;
+                newcomment-&gt;linenum = linenum + 1;
+            }
+            /* Replace the scanned comment struct with newcomment in the
+             * list. */
+            newcomment-&gt;next = comment2;
+            *pcomment = newcomment;
+            pcomment = &amp;newcomment-&gt;next;
+        }
+    }
+    return comments;
+}
+
+/***********************************************************************
+ * outputchildren : call output recursively on children of cnode
+ *
+ * Enter:   cnode
+ *          indent = indent (nesting) level of parent
+ *          indesc = whether already in &lt;description&gt; or other top-level
+ *                   descriptive element
+ */
+static void
+outputchildren(struct cnode *cnode, unsigned int indent, int indesc)
+{
+    int curindesc = indesc;
+    cnode = cnode-&gt;children;
+    while (cnode) {
+        if (curindesc != cnode-&gt;funcs-&gt;indesc) {
+            assert(!indesc);
+            printf(&quot;%*s&lt;%sdescription&gt;\n&quot;, indent + 1, &quot;&quot;, curindesc ? &quot;/&quot; : &quot;&quot;);
+            curindesc = !curindesc;
+        }
+        (*cnode-&gt;funcs-&gt;output)(cnode, indent + 2);
+        cnode = cnode-&gt;next;
+    }
+    if (curindesc != indesc)
+        printf(&quot;%*s&lt;%sdescription&gt;\n&quot;, indent + 1, &quot;&quot;, curindesc ? &quot;/&quot; : &quot;&quot;);
+}
+
+/***********************************************************************
+ * default_askend : ask node if it wants to end at a para start (default
+ *                  implementation)
+ *
+ * Enter:   cnode
+ *          type = 0 else cnodefuncs for newly starting para
+ *
+ * Return:  non-zero if this node wants to end
+ */
+static int
+default_askend(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    return 1;
+}
+
+/***********************************************************************
+ * root_askend : ask root node if it wants to end at a para start
+ *
+ * Enter:   cnode for root
+ *          type = 0 else cnodefuncs for newly starting para
+ *
+ * Return:  non-zero if this node wants to end
+ */
+static int
+root_askend(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    return 0;
+}
+
+/***********************************************************************
+ * root_output : output root cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+root_output(struct cnode *cnode, unsigned int indent)
+{
+    outputchildren(cnode, indent, 0);
+}
+
+/***********************************************************************
+ * cnode type root
+ */
+static const struct cnodefuncs root_funcs = {
+    0, /* !indesc */
+    1, /* needpara */
+    &amp;root_askend,
+    0, /* end */
+    &amp;root_output,
+};
+
+/***********************************************************************
+ * endcnode : end current cnode
+ *
+ * Enter:   cnode = current cnode
+ *
+ * Return:  cnode = new current code (parent of old one)
+ */
+static struct cnode *
+endcnode(struct cnode *cnode)
+{
+    if (cnode-&gt;funcs-&gt;end)
+        (*cnode-&gt;funcs-&gt;end)(cnode);
+    /* Reverse the children list. */
+    {
+        struct cnode *child = cnode-&gt;children;
+        cnode-&gt;children = 0;
+        while (child) {
+            struct cnode *next = child-&gt;next;
+            child-&gt;next = cnode-&gt;children;
+            cnode-&gt;children = child;
+            child = next;
+        }
+    }
+    return cnode-&gt;parent;
+}
+
+/***********************************************************************
+ * endspecificcnode : end a specific type of cnode
+ *
+ * Enter:   cnode = current cnode
+ *          type = type of node to end
+ *          filename, linenum = filename and line number (for error reporting)
+ *
+ * Return:  new current cnode
+ */
+static struct cnode *
+endspecificcnode(struct cnode *cnode, const struct cnodefuncs *type,
+                 const char *filename, unsigned int linenum)
+{
+    while (cnode-&gt;funcs != type) {
+        if (cnode-&gt;funcs == &amp;root_funcs)
+            locerrorexit(filename, linenum, &quot;unmatched \\endcode&quot;);
+        cnode = endcnode(cnode);
+    }
+    return cnode;
+}
+
+/***********************************************************************
+ * startcnode : start a newly created cnode
+ *
+ * Enter:   cnode = current cnode
+ *          newcnode = new cnode to start
+ *
+ * Return:  new current cnode (which is the same as newcnode)
+ */
+static struct cnode *
+startcnode(struct cnode *cnode, struct cnode *newcnode)
+{
+    newcnode-&gt;parent = cnode;
+    newcnode-&gt;next = cnode-&gt;children;
+    cnode-&gt;children = newcnode;
+    return newcnode;
+}
+
+/***********************************************************************
+ * para_output : output para cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+para_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;p&gt;\n&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/p&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * para_end : end a para cnode
+ *
+ * Enter:   cnode struct
+ */
+static void
+para_end(struct cnode *cnode)
+{
+    /* If the para cnode is empty, remove it. */
+    if (!cnode-&gt;children)
+        cnode-&gt;parent-&gt;children = cnode-&gt;next;
+}
+
+/***********************************************************************
+ * cnode type para
+ */
+static const struct cnodefuncs para_funcs = {
+    1, /* indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    &amp;para_end, /* end */
+    &amp;para_output,
+};
+
+/***********************************************************************
+ * brief_output : output brief cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+brief_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;brief&gt;\n&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/brief&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type brief
+ */
+static const struct cnodefuncs brief_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;brief_output,
+};
+
+/***********************************************************************
+ * return_output : output return cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+return_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;description&gt;&lt;p&gt;\n&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/p&gt;&lt;/description&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type return
+ */
+static const struct cnodefuncs return_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;return_output,
+};
+
+/***********************************************************************
+ * author_output : output name cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+name_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;name&gt;\n&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/name&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type name
+ */
+static const struct cnodefuncs name_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;name_output,
+};
+
+/***********************************************************************
+ * author_output : output author cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+author_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;author&gt;\n&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/author&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type author
+ */
+static const struct cnodefuncs author_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;author_output,
+};
+
+/***********************************************************************
+ * version_output : output version cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+version_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;version&gt;\n&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/version&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type version
+ */
+static const struct cnodefuncs version_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;version_output,
+};
+
+/***********************************************************************
+ * cnode type code
+ */
+/***********************************************************************
+ * code_end : end a code cnode
+ *
+ * Enter:   cnode struct
+ */
+static void
+code_end(struct cnode *cnode)
+{
+    if (incode) {
+        /* The incode flag has not been cleared, so this code cnode is
+         * being ended implicitly. We complain about that. */
+        locerrorexit(cnode-&gt;filename, cnode-&gt;linenum, &quot;mismatched \\code&quot;);
+    }
+}
+
+/***********************************************************************
+ * code_output : output code cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+code_output(struct cnode *cnode, unsigned int indent)
+{
+    /* Note capitalization to differentiate it from HTML code element. */
+    if(cnode-&gt;attrtext)
+            printf(&quot;%*s&lt;Code %s&gt;&quot;, indent, &quot;&quot;, cnode-&gt;attrtext);
+        else
+            printf(&quot;%*s&lt;Code&gt;&quot;, indent, &quot;&quot;);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;&lt;/Code&gt;\n&quot;);
+}
+
+static const struct cnodefuncs code_funcs = {
+    0, /* indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    &amp;code_end, /* end */
+    &amp;code_output,
+};
+
+/***********************************************************************
+ * startpara : start a new para cnode in the parse tree
+ *
+ * Enter:   cnode = current cnode
+ *          type = vtable for particular type of cnode
+ *
+ * Return:  new current cnode
+ */
+static struct cnode *
+startpara(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    struct cnode *newcnode;
+    while ((*cnode-&gt;funcs-&gt;askend)(cnode, type))
+        cnode = endcnode(cnode);
+    newcnode = memalloc(sizeof(struct cnode));
+    newcnode-&gt;funcs = type;
+    return startcnode(cnode, newcnode);
+}
+
+/***********************************************************************
+ * cnode type text
+ */
+struct textcnode {
+    struct cnode cn;
+    unsigned char *data;
+    unsigned int len;
+    unsigned int max;
+};
+
+/***********************************************************************
+ * text_end : end a text cnode
+ *
+ * Enter:   cnode struct
+ */
+static void
+text_end(struct cnode *cnode)
+{
+    struct textcnode *textcnode = (void *)cnode;
+    textcnode-&gt;data[textcnode-&gt;len] = 0;
+    textcnode-&gt;max = textcnode-&gt;len + 1;
+    textcnode-&gt;data = memrealloc(textcnode-&gt;data, textcnode-&gt;max);
+}
+
+/***********************************************************************
+ * text_output : output text cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+text_output(struct cnode *cnode, unsigned int indent)
+{
+    /* We do not indent, in case this is inside a code cnode. */
+    struct textcnode *textcnode = (void *)cnode;
+    unsigned int len = textcnode-&gt;len;
+    unsigned const char *p = textcnode-&gt;data;
+    while (len) {
+        unsigned int thislen;
+        const char *thisptr;
+        thislen = p[0];
+        /* (void *) cast is to avoid a warning from the MS compiler.
+         * I think the warning is wrong, but I could be wrong. */
+        memcpy((void *)&amp;thisptr, p + 1, sizeof(void *));
+        p += 1 + sizeof(void *);
+        len -= 1 + sizeof(void *);
+        printtext(thisptr, thislen, 0);
+    }
+}
+
+static const struct cnodefuncs text_funcs = {
+    1, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    &amp;text_end, /* end */
+    &amp;text_output,
+};
+
+/***********************************************************************
+ * cnode type html (HTML element)
+ */
+struct htmlcnode {
+    struct cnode cn;
+    const struct htmleldesc *desc;
+    char attrs[1];
+};
+
+/***********************************************************************
+ * html_end : end an html cnode
+ *
+ * Enter:   cnode struct
+ */
+static void
+html_end(struct cnode *cnode)
+{
+    if (((struct htmlcnode *)cnode)-&gt;desc-&gt;flags &amp; HTMLEL_BLOCK)
+        inhtmlblock--;
+}
+
+/***********************************************************************
+ * html_output : output html cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+html_output(struct cnode *cnode, unsigned int indent)
+{
+    struct htmlcnode *htmlcnode = (void *)cnode;
+    if (!(htmlcnode-&gt;desc-&gt;flags &amp; HTMLEL_INLINE))
+        printf(&quot;%*s&quot;, indent, &quot;&quot;);
+    if (htmlcnode-&gt;cn.children) {
+        printf(&quot;&lt;%s%s&gt;&quot;, htmlcnode-&gt;desc-&gt;name, htmlcnode-&gt;attrs);
+        if (!(htmlcnode-&gt;desc-&gt;flags &amp; HTMLEL_INLINE))
+            putchar('\n');
+        outputchildren(&amp;htmlcnode-&gt;cn, indent, 1);
+        if (!(htmlcnode-&gt;desc-&gt;flags &amp; HTMLEL_INLINE))
+            printf(&quot;%*s&quot;, indent, &quot;&quot;);
+        printf(&quot;&lt;/%s&gt;&quot;, htmlcnode-&gt;desc-&gt;name);
+    } else
+        printf(&quot;&lt;%s%s/&gt;&quot;, htmlcnode-&gt;desc-&gt;name, htmlcnode-&gt;attrs);
+    if (!(htmlcnode-&gt;desc-&gt;flags &amp; HTMLEL_INLINE))
+        putchar('\n');
+}
+
+static const struct cnodefuncs html_funcs = {
+    1, /* indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    &amp;html_end, /* end */
+    &amp;html_output,
+};
+
+/***********************************************************************
+ * starthtmlcnode : start a new html cnode
+ *
+ * Enter:   cnode = current cnode
+ *          htmleldesc = html element descriptor
+ *          attrs = attributes text
+ *          attrslen = length of attributes text
+ *          filename
+ *          linenum = line number
+ *
+ * Return:  new current cnode
+ */
+static struct cnode *
+starthtmlcnode(struct cnode *cnode, const struct htmleldesc *htmleldesc,
+               const char *attrs, unsigned int attrslen,
+               const char *filename, unsigned int linenum)
+{
+    struct htmlcnode *htmlcnode;
+    /* First close enough elements to get to a content
+     * model that will accept this new element. */
+    for (;;) {
+        if (cnode-&gt;funcs != &amp;html_funcs) {
+            /* Not in any html element. We can accept any block element
+             * (in which case we need to close the current paragraph
+             * first) or any inline element (in which case we need to
+             * close the current text cnode first). */
+            if (!(htmleldesc-&gt;flags &amp; HTMLEL_INLINE)) {
+                if (!(htmleldesc-&gt;flags &amp; HTMLEL_BLOCK))
+                    locerrorexit(filename, linenum, &quot;&lt;%s&gt; not valid here&quot;, htmleldesc-&gt;name);
+                while ((*cnode-&gt;funcs-&gt;askend)(cnode, 0))
+                    cnode = endcnode(cnode);
+            } else {
+                while (cnode-&gt;funcs == &amp;text_funcs)
+                    cnode = endcnode(cnode);
+            }
+            break;
+        }
+        htmlcnode = (struct htmlcnode *)cnode;
+        if (!(htmleldesc-&gt;flags &amp; htmlcnode-&gt;desc-&gt;content))
+            locerrorexit(filename, linenum, &quot;&lt;%s&gt; not valid here&quot;, htmleldesc-&gt;name);
+        break;
+    }
+    if (htmleldesc-&gt;flags &amp; HTMLEL_BLOCK)
+        inhtmlblock++;
+    /* Create the new html cnode. */
+    htmlcnode = memalloc(sizeof(struct htmlcnode) + attrslen);
+    htmlcnode-&gt;desc = htmleldesc;
+    htmlcnode-&gt;cn.funcs = &amp;html_funcs;
+    htmlcnode-&gt;cn.filename = filename;
+    htmlcnode-&gt;cn.linenum = linenum;
+    memcpy(htmlcnode-&gt;attrs, attrs, attrslen);
+    htmlcnode-&gt;attrs[attrslen] = 0;
+    /* Start the html cnode. */
+    cnode = startcnode(cnode, &amp;htmlcnode-&gt;cn);
+    return cnode;
+}
+
+/***********************************************************************
+ * param_output : output param cnode
+ *
+ * Enter:   cnode for param
+ *          indent = indent (nesting) level
+ *
+ * This is only used for a \param inside a \def-device-cap. A normal
+ * \param that gets attached to a function argument gets changed to
+ * a \return so it does not use this output function.
+ */
+static void
+param_output(struct cnode *cnode, unsigned int indent)
+{
+    struct paramcnode *paramcnode = (void *)cnode;
+    printf(&quot;%*s&lt;param identifier=\&quot;%s\&quot;&gt;\n&quot;, indent, &quot;&quot;, paramcnode-&gt;name);
+    outputchildren(&amp;paramcnode-&gt;cn, indent, 1);
+    printf(&quot;%*s&lt;/param&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type param
+ */
+static const struct cnodefuncs param_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;param_output,
+};
+
+/***********************************************************************
+ * cnode type throw
+ */
+static const struct cnodefuncs throw_funcs = {
+    0, /* !indesc */
+    0, /* !needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;return_output,
+};
+
+/***********************************************************************
+ * startparamcnode : start param (or throw) cnode
+ *
+ * Enter:   cnode = current cnode
+ *          word = name of param
+ *          wordlen = length of name
+ *          inout = bit 0 = in, bit 1 = out
+ *          type = &amp;param_funcs or &amp;throw_funcs
+ *
+ * Return:  new current cnode
+ */
+static struct cnode *
+startparamcnode(struct cnode *cnode, const char *word, unsigned int wordlen,
+                int inout, const struct cnodefuncs *funcs)
+{
+    struct paramcnode *paramcnode;
+    paramcnode = memalloc(sizeof(struct paramcnode) + wordlen);
+    paramcnode-&gt;cn.funcs = funcs;
+    memcpy(paramcnode-&gt;name, word, wordlen);
+    paramcnode-&gt;name[wordlen] = 0;
+    paramcnode-&gt;inout = inout;
+    return startcnode(cnode, &amp;paramcnode-&gt;cn);
+}
+
+/***********************************************************************
+ * api_feature_output : output api-feature cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+api_feature_output(struct cnode *cnode, unsigned int indent)
+{
+    struct paramcnode *paramcnode = (void *)cnode;
+    printf(&quot;%*s&lt;api-feature identifier=\&quot;%s\&quot;&gt;\n&quot;, indent, &quot;&quot;, paramcnode-&gt;name);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/api-feature&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type api_feature
+ */
+static const struct cnodefuncs api_feature_funcs = {
+    0, /* !indesc */
+    0, /* needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;api_feature_output,
+};
+
+/***********************************************************************
+ * device_cap_output : output device-cap cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+device_cap_output(struct cnode *cnode, unsigned int indent)
+{
+    struct paramcnode *paramcnode = (void *)cnode;
+    printf(&quot;%*s&lt;device-cap identifier=\&quot;%s\&quot;&gt;\n&quot;, indent, &quot;&quot;, paramcnode-&gt;name);
+    outputchildren(cnode, indent, 1);
+    printf(&quot;%*s&lt;/device-cap&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type device_cap
+ */
+static const struct cnodefuncs device_cap_funcs = {
+    0, /* !indesc */
+    0, /* needpara */
+    &amp;default_askend,
+    0, /* end */
+    &amp;device_cap_output,
+};
+
+/***********************************************************************
+ * def_api_feature_askend : ask if def-api-feature cnode wants to end at new para
+ *
+ * Enter:   cnode for def-api-feature
+ *          type = cnodefuncs for new para (0 if html block element)
+ *
+ * Return:  non-zero to end the def-api-feature
+ */
+static int
+def_api_feature_askend(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    /* A def-api-feature does not end at a plain para, an html block element,
+     * a brief para, or a device-cap. */
+    if (!type || type == &amp;para_funcs || type == &amp;device_cap_funcs || type == &amp;brief_funcs)
+        return 0;
+    return 1;
+}
+
+/***********************************************************************
+ * def_api_feature_output : output def-api-feature cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+def_api_feature_output(struct cnode *cnode, unsigned int indent)
+{
+    struct paramcnode *paramcnode = (void *)cnode;
+    printf(&quot;%*s&lt;def-api-feature identifier=\&quot;%s\&quot;&gt;\n&quot;, indent, &quot;&quot;, paramcnode-&gt;name);
+    printf(&quot;%*s&lt;descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    outputchildren(cnode, indent + 2, 0);
+    printf(&quot;%*s&lt;/descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    printf(&quot;%*s&lt;/def-api-feature&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type def_api_feature
+ */
+static const struct cnodefuncs def_api_feature_funcs = {
+    0, /* !indesc */
+    1, /* needpara */
+    &amp;def_api_feature_askend,
+    0, /* end */
+    &amp;def_api_feature_output,
+};
+
+/***********************************************************************
+ * def_api_feature_set_askend : ask if def-api-feature-set cnode wants to end at new para
+ *
+ * Enter:   cnode for def-api-feature-set
+ *          type = cnodefuncs for new para (0 if html block element)
+ *
+ * Return:  non-zero to end the def-api-feature-set
+ */
+static int
+def_api_feature_set_askend(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    /* A def-api-feature-set does not end at a plain para, an html block element,
+     * a brief para, or an api-feature. */
+    if (!type || type == &amp;para_funcs || type == &amp;api_feature_funcs || type == &amp;brief_funcs)
+        return 0;
+    return 1;
+}
+
+/***********************************************************************
+ * def_api_feature_set_output : output def-api-feature-set cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+def_api_feature_set_output(struct cnode *cnode, unsigned int indent)
+{
+    struct paramcnode *paramcnode = (void *)cnode;
+    printf(&quot;%*s&lt;def-api-feature-set identifier=\&quot;%s\&quot;&gt;\n&quot;, indent, &quot;&quot;, paramcnode-&gt;name);
+    printf(&quot;%*s&lt;descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    outputchildren(cnode, indent + 2, 0);
+    printf(&quot;%*s&lt;/descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    printf(&quot;%*s&lt;/def-api-feature-set&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type def_api_feature_set
+ */
+static const struct cnodefuncs def_api_feature_set_funcs = {
+    0, /* !indesc */
+    1, /* needpara */
+    &amp;def_api_feature_set_askend,
+    0, /* end */
+    &amp;def_api_feature_set_output,
+};
+
+/***********************************************************************
+ * def_instantiated_askend : ask if def-instantiated cnode wants to end at new para
+ *
+ * Enter:   cnode for def-instantiated
+ *          type = cnodefuncs for new para (0 if html block element)
+ *
+ * Return:  non-zero to end the def-instantiated
+ */
+static int
+def_instantiated_askend(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    /* A def-instantiated does not end at a plain para, an html block element,
+     * a brief para, or an api-feature. */
+    if (!type || type == &amp;para_funcs || type == &amp;api_feature_funcs || type == &amp;brief_funcs)
+        return 0;
+    return 1;
+}
+
+/***********************************************************************
+ * def_instantiated_output : output def-instantiated cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+def_instantiated_output(struct cnode *cnode, unsigned int indent)
+{
+    printf(&quot;%*s&lt;def-instantiated&gt;\n&quot;, indent, &quot;&quot;);
+    printf(&quot;%*s&lt;descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    outputchildren(cnode, indent + 2, 0);
+    printf(&quot;%*s&lt;/descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    printf(&quot;%*s&lt;/def-instantiated&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type def_instantiated
+ */
+static const struct cnodefuncs def_instantiated_funcs = {
+    0, /* !indesc */
+    1, /* needpara */
+    &amp;def_instantiated_askend,
+    0, /* end */
+    &amp;def_instantiated_output,
+};
+
+/***********************************************************************
+ * def_device_cap_askend : ask if def-device-cap cnode wants to end at new para
+ *
+ * Enter:   cnode for def-device-cap
+ *          type = cnodefuncs for new para (0 if html block element)
+ *
+ * Return:  non-zero to end the def-device-cap
+ */
+static int
+def_device_cap_askend(struct cnode *cnode, const struct cnodefuncs *type)
+{
+    /* A def-device-cap does not end at a plain para, an html block element,
+     * a \brief para, or a param. */
+    if (!type || type == &amp;para_funcs || type == &amp;param_funcs || type == &amp;brief_funcs)
+        return 0;
+    return 1;
+}
+
+/***********************************************************************
+ * def_device_cap_output : output def_device-cap cnode
+ *
+ * Enter:   cnode for root
+ *          indent = indent (nesting) level
+ */
+static void
+def_device_cap_output(struct cnode *cnode, unsigned int indent)
+{
+    struct paramcnode *paramcnode = (void *)cnode;
+    printf(&quot;%*s&lt;def-device-cap identifier=\&quot;%s\&quot;&gt;\n&quot;, indent, &quot;&quot;, paramcnode-&gt;name);
+    printf(&quot;%*s&lt;descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    outputchildren(cnode, indent + 2, 0);
+    printf(&quot;%*s&lt;/descriptive&gt;\n&quot;, indent + 2, &quot;&quot;);
+    printf(&quot;%*s&lt;/def-device-cap&gt;\n&quot;, indent, &quot;&quot;);
+}
+
+/***********************************************************************
+ * cnode type def_device_cap
+ */
+static const struct cnodefuncs def_device_cap_funcs = {
+    0, /* !indesc */
+    1, /* needpara */
+    &amp;def_device_cap_askend,
+    0, /* end */
+    &amp;def_device_cap_output,
+};
+
+/***********************************************************************
+ * addtext : add text to current text node, starting one if necessary
+ *
+ * Enter:   cnode = current cnode
+ *          text
+ *          len = length of text
+ *
+ * Return:  new current cnode
+ */
+static struct cnode *
+addtext(struct cnode *cnode, const char *text, unsigned int len)
+{
+    struct textcnode *textcnode;
+    if (!len)
+        return cnode;
+    if (cnode-&gt;funcs != &amp;text_funcs) {
+        /* Start new text cnode. */
+        textcnode = memalloc(sizeof(struct textcnode));
+        textcnode-&gt;cn.funcs = &amp;text_funcs;
+        cnode = startcnode(cnode, &amp;textcnode-&gt;cn);
+    }
+    textcnode = (void *)cnode;
+    do {
+        unsigned char buf[1 + sizeof(void *)];
+        unsigned int thislen = len;
+        if (thislen &gt; 255)
+            thislen = 255;
+        /* Encode a record as a single byte length followed by a pointer. */
+        buf[0] = thislen;
+        memcpy(buf + 1, &amp;text, sizeof(void *));
+        /* Add to the text cnode's data. */
+        if (textcnode-&gt;len + sizeof(buf) &gt;= textcnode-&gt;max) {
+            /* Need to reallocate (or allocate) data buffer. */
+            textcnode-&gt;max = textcnode-&gt;max ? 2 * textcnode-&gt;max : 1024;
+            textcnode-&gt;data = memrealloc(textcnode-&gt;data, textcnode-&gt;max);
+        }
+        memcpy(textcnode-&gt;data + textcnode-&gt;len, buf, sizeof(buf));
+        textcnode-&gt;len += sizeof(buf);
+        text += thislen;
+        len -= thislen;
+    } while (len);
+    return &amp;textcnode-&gt;cn;
+}
+
+/***********************************************************************
+ * iswhitespace : determine if character is whitespace
+ *
+ * Enter:   ch = character
+ *
+ * Return:  1 if whitespace
+ */
+static inline int
+iswhitespace(int ch)
+{
+    unsigned int i = ch - 1;
+    if (i &gt;= 32)
+        return 0;
+    return 0x80001100 &gt;&gt; i &amp; 1;
+}
+
+/***********************************************************************
+ * parseword : parse the next word, ignoring leading whitespace
+ *
+ * Enter:   *pp = text pointer
+ *
+ * Return:  0 else start of word (*pp updated to just beyond end)
+ */
+static const char *
+parseword(const char **pp)
+{
+    const char *p = *pp, *word = 0;
+    int ch = *p;
+    while (iswhitespace(ch))
+        ch = *++p;
+    word = p;
+    while ((unsigned)((ch &amp; ~0x20) - 'A') &lt;= 'Z' - 'A'
+            || (unsigned)(ch - '0') &lt; 10 || ch == '_' || ch == '.'
+            || ch == ':' || ch == '/' || ch == '-')
+    {
+        ch = *++p;
+    }
+    if (p == word)
+        return 0;
+    *pp = p;
+    return word;
+}
+
+/***********************************************************************
+ * Doxygen command handlers
+ *
+ * Enter:   p = text just after command
+ *          *pcnode = pointer to current cnode struct
+ *          type = 0 else cnodefuncs pointer for type of node to start
+ *          filename, linenum = current filename and line number (for error reporting)
+ *
+ * Return:  p = updated if extra text was eaten
+ *
+ * On return, *pnode is updated if any node was closed or opened.
+ */
+
+/***********************************************************************
+ * Doxygen command handler : \b
+ */
+static const char *
+dox_b(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+      const char *filename, unsigned int linenum, const char *cmdname)
+{
+    struct cnode *cnode = *pcnode;
+    const char *word = parseword(&amp;p);
+    /* Silently ignore \b with no following word. */
+    if (word) {
+        struct cnode *mycnode;
+        mycnode = cnode = starthtmlcnode(cnode, HTMLELDESC_B, 0, 0, filename, linenum);
+        cnode = addtext(cnode, word, p - word);
+        while (cnode != mycnode)
+            cnode = endcnode(cnode);
+        cnode = endcnode(cnode);
+    }
+    *pcnode = cnode;
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \n
+ */
+static const char *
+dox_n(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+      const char *filename, unsigned int linenum, const char *cmdname)
+{
+    struct cnode *cnode = *pcnode;
+    cnode = starthtmlcnode(cnode, HTMLELDESC_BR, 0, 0, filename, linenum);
+    cnode = endcnode(cnode);
+    *pcnode = cnode;
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \code
+ */
+static const char *
+dox_code(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+         const char *filename, unsigned int linenum, const char *cmdname)
+{
+    *pcnode = startpara(*pcnode, &amp;code_funcs);
+    (*pcnode)-&gt;filename = filename;
+    (*pcnode)-&gt;linenum = linenum; /* for reporting mismatched \code error */
+    incode = 1;
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \endcode
+ */
+static const char *
+dox_endcode(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+            const char *filename, unsigned int linenum, const char *cmdname)
+{
+    incode = 0;
+    *pcnode = endspecificcnode(*pcnode, &amp;code_funcs, filename, linenum);
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \param
+ */
+static const char *
+dox_param(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+          const char *filename, unsigned int linenum, const char *cmdname)
+{
+    struct cnode *cnode = *pcnode;
+    unsigned int inout = 0;
+    const char *word;
+    /* Check for &quot;in&quot;, &quot;out&quot; or both as attributes. */
+    if (*p == '[') {
+        for (;;) {
+            p++;
+            if (!memcmp(p, &quot;in&quot;, 2)) {
+                inout |= 1;
+                p += 2;
+            } else if (!memcmp(p, &quot;out&quot;, 3)) {
+                inout |= 2;
+                p += 3;
+            } else
+                break;
+            if (*p != ',')
+                break;
+        }
+        if (*p != ']')
+            locerrorexit(filename, linenum, &quot;bad attributes on \\param&quot;);
+        p++;
+    }
+    /* Get the next word as the parameter name. */
+    word = parseword(&amp;p);
+    if (!word)
+        locerrorexit(filename, linenum, &quot;expected word after \\param&quot;);
+    /* Close any open nodes. */
+    while ((*cnode-&gt;funcs-&gt;askend)(cnode, type))
+        cnode = endcnode(cnode);
+    /* Create a new param cnode. */
+    cnode = startparamcnode(cnode, word, p - word, inout, type);
+    cnode-&gt;filename = filename;
+    cnode-&gt;linenum = linenum;
+    *pcnode = cnode;
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \brief, \return
+ */
+static const char *
+dox_para(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+         const char *filename, unsigned int linenum, const char *cmdname)
+{
+    *pcnode = startpara(*pcnode, type);
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \throw
+ */
+static const char *
+dox_throw(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+          const char *filename, unsigned int linenum, const char *cmdname)
+{
+    struct cnode *cnode = *pcnode;
+    const char *word;
+    /* Get the next word as the exception name. */
+    word = parseword(&amp;p);
+    if (!word)
+        locerrorexit(filename, linenum, &quot;expected word after \\throw&quot;);
+    /* Close any open nodes. */
+    while ((*cnode-&gt;funcs-&gt;askend)(cnode, type))
+        cnode = endcnode(cnode);
+    /* Create a new throw cnode. */
+    cnode = startparamcnode(cnode, word, p - word, 0, type);
+    cnode-&gt;filename = filename;
+    cnode-&gt;linenum = linenum;
+    *pcnode = cnode;
+    return p;
+}
+
+/***********************************************************************
+ * Doxygen command handler : \lang
+ */
+static const char *
+dox_attr(const char *p, struct cnode **pcnode, const struct cnodefuncs *type,
+          const char *filename, unsigned int linenum, const char *cmdname)
+{
+  struct cnode *cnode = *pcnode;
+    const char *word;
+    int len, wordlen, offset = 0;
+        char *attrtext;
+    /* Get the next word as the attribute value. */
+    word = parseword(&amp;p);
+    if (!word)
+        locerrorexit(filename, linenum, &quot;expected word after \\%s&quot;, cmdname);
+
+        len = strlen(cmdname) + (wordlen = p-word) + 4; /* p=&quot;word&quot;\0 */
+        if(cnode-&gt;attrtext)
+          len += (offset = strlen(cnode-&gt;attrtext)) + 1; /* add space for space */
+        attrtext = memalloc(len);
+        if(offset) {
+                memcpy(attrtext, cnode-&gt;attrtext, offset);
+                attrtext[offset++] = ' ';
+                memfree(((void*)cnode-&gt;attrtext));
+        }
+        offset += sprintf(&amp;attrtext[offset], &quot;%s=\&quot;&quot;, cmdname);
+        memcpy(&amp;attrtext[offset], word, wordlen);
+        strcpy(&amp;attrtext[offset + wordlen], &quot;\&quot;&quot;);
+        cnode-&gt;attrtext = attrtext;
+        /* skip delimiter because it won't be done otherwise */
+        if(incode &amp;&amp; iswhitespace(*p)) ++p;
+    return p;
+}
+
+/***********************************************************************
+ * commands : table of Doxygen commands
+ */
+struct command {
+    const char *(*func)(const char *p, struct cnode **pcnode, const struct cnodefuncs *type, const char *filename, unsigned int linenum, const char *cmdname);
+    const struct cnodefuncs *type;
+    unsigned int namelen;
+    const char *name;
+};
+static const struct command commands[] = {
+    { &amp;dox_throw, &amp;def_api_feature_funcs, 15, &quot;def-api-feature&quot; },
+    { &amp;dox_throw, &amp;def_api_feature_set_funcs, 19, &quot;def-api-feature-set&quot; },
+    { &amp;dox_para, &amp;def_instantiated_funcs, 16, &quot;def-instantiated&quot; },
+    { &amp;dox_para, &amp;name_funcs, 4, &quot;name&quot; },
+    { &amp;dox_para, &amp;author_funcs, 6, &quot;author&quot; },
+    { &amp;dox_b, 0, 1, &quot;b&quot; },
+    { &amp;dox_para, &amp;brief_funcs, 5, &quot;brief&quot; },
+    { &amp;dox_code, 0, 4, &quot;code&quot; },
+    { &amp;dox_throw, &amp;def_device_cap_funcs, 14, &quot;def-device-cap&quot; },
+    { &amp;dox_attr, 0, 4, &quot;lang&quot; },
+    { &amp;dox_endcode, 0, 7, &quot;endcode&quot; },
+    { &amp;dox_n, 0, 1, &quot;n&quot; },
+    { &amp;dox_param, &amp;param_funcs, 5, &quot;param&quot; },
+    { &amp;dox_para, &amp;return_funcs, 6, &quot;return&quot; },
+    { &amp;dox_throw, &amp;throw_funcs, 5, &quot;throw&quot; },
+    { &amp;dox_throw, &amp;api_feature_funcs, 11, &quot;api-feature&quot; },
+    { &amp;dox_throw, &amp;device_cap_funcs, 10, &quot;device-cap&quot; },
+    { &amp;dox_para, &amp;version_funcs, 7, &quot;version&quot; },
+    { 0, 0, 0 }
+};
+
+/***********************************************************************
+ * parsehtmltag : parse html tag
+ *
+ * Enter:   start = start of tag, the '&lt;' char
+ *          *pcnode = current cnode
+ *          filename = filename
+ *          *plinenum = current line number
+ *
+ * Return:  just after the tag
+ *          *pcnode and *plinenum updated if applicable
+ */
+static const char *
+parsehtmltag(const char *start, struct cnode **pcnode,
+             const char *filename, unsigned int *plinenum)
+{
+    struct cnode *cnode = *pcnode;
+    const char *end = start + 1, *endname = 0, *name = end;
+    int ch = *end;
+    int quote = 0;
+    int close = 0;
+    unsigned int linenum = *plinenum;
+    const struct htmleldesc *htmleldesc;
+    if (ch == '/') {
+        close = 1;
+        ch = *++end;
+        name = end;
+    }
+    /* Find the end of the tag. */
+    for (;;) {
+        if (!ch)
+            locerrorexit(filename, *plinenum, &quot;unterminated HTML tag&quot;);
+        if (ch == '\n')
+            linenum++;
+        else if (iswhitespace(ch) || ch == '/') {
+            if (!endname)
+                endname = end;
+        } else if (!quote) {
+            if (ch == '&quot;' || ch == '\'')
+                quote = ch;
+            else if (ch == '&gt;')
+                break;
+        } else {
+            if (ch == quote)
+                quote = 0;
+        }
+        ch = *++end;
+    }
+    if (!endname)
+        endname = end;
+    end++;
+    /* See if it's an xml open-close tag. */
+    if (!close &amp;&amp; endname != name &amp;&amp; end[-2] == '/')
+        close = 2;
+    /* Find the tag from our list. */
+    htmleldesc = htmleldescs;
+    for (;;) {
+        if (!htmleldesc-&gt;namelen) {
+            locerrorexit(filename, *plinenum, &quot;unrecognized HTML tag %.*s&quot;,
+                    end - start, start);
+        }
+        if (htmleldesc-&gt;namelen == endname - name
+                &amp;&amp; !strncasecmp(htmleldesc-&gt;name, name, endname - name))
+        {
+            break;
+        }
+        htmleldesc++;
+    }
+    if (close == 1) {
+        /* Closing tag. Find open element to close. */
+        for (;;) {
+            struct htmlcnode *htmlcnode;
+            if (cnode-&gt;funcs != &amp;text_funcs) {
+                if (cnode-&gt;funcs != &amp;html_funcs) {
+                    locerrorexit(filename, *plinenum, &quot;mismatched %.*s&quot;,
+                            end - start, start);
+                }
+                htmlcnode = (struct htmlcnode *)cnode;
+                if (htmlcnode-&gt;desc == htmleldesc)
+                    break;
+                if (!(htmlcnode-&gt;desc-&gt;flags &amp; HTMLEL_AUTOCLOSE)) {
+                    locerrorexit(filename, htmlcnode-&gt;cn.linenum,
+                            &quot;mismatched &lt;%.*s&gt;&quot;,
+                            htmlcnode-&gt;desc-&gt;namelen, htmlcnode-&gt;desc-&gt;name);
+                }
+            }
+            cnode = endcnode(cnode);
+        }
+        cnode = endcnode(cnode);
+    } else {
+        /* Opening tag. */
+      if (close !=2)
+           cnode = starthtmlcnode(cnode, htmleldesc, endname, end - 1 - endname, filename, *plinenum);
+      else // don't include the closing &quot;/&quot; in the attributes list
+           cnode = starthtmlcnode(cnode, htmleldesc, endname, end - 2 - endname, filename, *plinenum);
+      if (close == 2 || (htmleldesc-&gt;content &amp; HTMLEL_EMPTY)) {
+        /* Empty element -- close it again. */
+        cnode = endcnode(cnode);
+      }
+    }
+    *pcnode = cnode;
+    *plinenum = linenum;
+    return end;
+}
+
+/***********************************************************************
+ * parsecomment : parse one comment
+ *
+ * Enter:   comment struct
+ */
+static void
+parsecomment(struct comment *comment)
+{
+    struct cnode *cnode = &amp;comment-&gt;root;
+    const char *p = comment-&gt;text + comment-&gt;back;
+    unsigned int linenum = comment-&gt;linenum - 1;
+    int ch;
+    curcomment = comment;
+    incode = 0;
+    inhtmlblock = 0;
+    cnode-&gt;funcs = &amp;root_funcs;
+    for (;;) {
+        /* Start of new line. */
+        const char *starttext;
+        ch = *p;
+        linenum++;
+        {
+            /* Find first non-whitespace character. */
+            const char *p2 = p;
+            int ch2 = ch;
+            while (iswhitespace(ch2))
+                ch2 = *++p2;
+            if (comment-&gt;type == TOK_BLOCKCOMMENT &amp;&amp; ch2 == '*') {
+                /* Ignore initial * in block comment (even in \code block). */
+                ch2 = *++p2;
+                ch = ch2;
+                p = p2;
+                if (ch == '*')
+                    goto checkforlineofstars;
+                while (iswhitespace(ch2))
+                    ch2 = *++p2;
+            }
+            if (comment-&gt;type == TOK_INLINECOMMENT &amp;&amp; ch2 == '/') {
+checkforlineofstars:
+                if (!incode) {
+                    /* Ignore whole line of * for block comment or / for inline
+                     * comment if that is the only thing on the line. */
+                    const char *p3 = p2;
+                    int ch3;
+                    do ch3 = *++p3; while (ch3 == ch2);
+                    while (iswhitespace(ch3)) ch3 = *++p3;
+                    if (!ch3 || ch3 == '\n') {
+                        /* Reached end of line (or whole comment) -- treat as
+                         * empty line. */
+                        ch2 = ch3;
+                        p2 = p3;
+                    }
+                }
+            }
+            if (!incode) {
+                /* Only allow whitespace omission above to take effect if
+                 * not in \code block. */
+                ch = ch2;
+                p = p2;
+            }
+        }
+        if (!ch) {
+            /* End of comments -- finish. */
+            break;
+        }
+        if (!incode &amp;&amp; !inhtmlblock &amp;&amp; ch == '\n') {
+            /* Blank line -- finish any para, but only if not in code and
+             * not in any HTML block element. */
+            while ((*cnode-&gt;funcs-&gt;askend)(cnode, 0))
+                cnode = endcnode(cnode);
+            p++;
+            continue;
+        }
+        /* Start new para if there isn't already one going. */
+        if (cnode-&gt;funcs-&gt;needpara)
+            cnode = startpara(cnode, &amp;para_funcs);
+        /* Process text on the line. */
+        starttext = p;
+        while (ch &amp;&amp; ch != '\n') {
+            if (ch != '\\' &amp;&amp; ch != '&lt;' /* &amp;&amp; ch != '@' */ &amp;&amp; ch != '$'
+                    &amp;&amp; ch != '&amp;' &amp;&amp; ch != '\r')
+            {
+                ch = *++p;
+                continue;
+            }
+            /* Output any pending text. */
+            if (p - starttext)
+                cnode = addtext(cnode, starttext, p - starttext);
+            /* Ignore \r in DOS line returns */
+            if (ch == '\r') {
+                ch = *++p;
+                  starttext = p;
+                continue;
+            }
+            if (ch == '$')
+                locerrorexit(comment-&gt;filename, linenum, &quot;use \\$ instead of $&quot;);
+            /* See if it is an html named entity. */
+            if (ch == '&amp;' &amp;&amp; p[1] != '#') {
+                const char *entity = ENTITIES;
+                /* This search could be faster if the entity names were put
+                 * in a hash table or something. */
+                const char *semicolon = strchr(p, ';');
+                unsigned int len;
+                if (!semicolon)
+                    locerrorexit(comment-&gt;filename, linenum, &quot;unterminated HTML entity&quot;);
+                p++;
+                for (;;) {
+                    len = strlen(entity);
+                    if (!len)
+                        locerrorexit(comment-&gt;filename, linenum, &quot;unrecognised HTML entity &amp;%.*s;&quot;, semicolon - p, p);
+                    if (len == semicolon - p &amp;&amp; !memcmp(p, entity, len))
+                        break;
+                    entity += len + 1;
+                    entity += strlen(entity) + 1;
+                }
+                entity += len + 1;
+                cnode = addtext(cnode, entity, strlen(entity));
+                p = semicolon + 1;
+                ch = *p;
+                starttext = p;
+                continue;
+            }
+            /* See if it is a backslash escape sequence. */
+            else if (ch == '\\') {
+                const char *match = &quot;\\@&amp;$#&lt;&gt;%&quot;;
+                const char *pos;
+                ch = p[1];
+                pos = strchr(match, ch);
+                if (pos) {
+                    /* Got a \ escape sequence. */
+                    const char *text = 
+                        &quot;\\\0    @\0    &amp;amp;\0$\0    #\0    &amp;lt;\0 &gt;\0    %&quot;
+                        + 6 * (pos - match);
+                    cnode = addtext(cnode, text, strlen(text));
+                    p += 2;
+                    ch = *p;
+                    starttext = p;
+                    continue;
+                }
+            } else if (ch == '&lt;') {
+                if (incode) {
+                    ch = *++p;
+                    starttext = p;
+                    continue;
+                }
+                /* It's an html tag. */
+                p = parsehtmltag(p, &amp;cnode, comment-&gt;filename, &amp;linenum);
+                ch = *p;
+                starttext = p;
+                continue;
+            }
+            {
+                /* Got a doxygen command. First work out its length. */
+                const char *start = ++p;
+                unsigned int cmdlen;
+                const struct command *command;
+                ch = *p;
+                while ((unsigned)((ch &amp; ~0x20) - 'A') &lt;= 'Z' - 'A'
+                        || (unsigned)(ch - '0') &lt; 10 || ch == '_' || ch == '-')
+                {
+                    ch = *++p;
+                }
+                cmdlen = p - start;
+                if (!cmdlen)
+                    locerrorexit(comment-&gt;filename, linenum, &quot;\\ or @ without Doxygen command&quot;);
+                /* Look it up in the table. */
+                command = commands;
+                for (;;) {
+                    if (!command-&gt;namelen) {
+                        locerrorexit(comment-&gt;filename, linenum, &quot;unrecognized Doxygen command '%.*s'&quot;,
+                                cmdlen + 1, start - 1);
+                    }
+                    if (command-&gt;namelen == cmdlen
+                            &amp;&amp; !memcmp(command-&gt;name, start, cmdlen))
+                    {
+                        break;
+                    }
+                    command++;
+                }
+                p = (*command-&gt;func)(p, &amp;cnode, command-&gt;type,
+                        comment-&gt;filename, linenum, command-&gt;name);
+                ch = *p;
+                starttext = p;
+            }
+        }
+        if (p - starttext) {
+            /* Start new para if there isn't already one going. */
+            if (cnode-&gt;funcs-&gt;needpara)
+                cnode = startpara(cnode, &amp;para_funcs);
+            cnode = addtext(cnode, starttext, p - starttext);
+        }
+        if (!ch)
+            break;
+        if (cnode-&gt;funcs == &amp;text_funcs)
+            addtext(cnode, &quot;\n&quot;, 1);
+        p++;
+    }
+    /* Finish the root cnode. */
+    do
+        cnode = endcnode(cnode);
+    while (cnode);
+    assert(!incode);
+    assert(!inhtmlblock);
+}
+
+/***********************************************************************
+ * parsecomments : parse comments
+ *
+ * Enter:   comment = first comment in list
+ */
+static void
+parsecomments(struct comment *comment)
+{
+    while (comment) {
+        parsecomment(comment);
+        comment = comment-&gt;next;
+    }
+}
+
+/***********************************************************************
+ * attachcommenttonode : attach comment struct to node
+ *
+ * Enter:   node = parse node for identifier
+ *          comment = comment struct
+ */
+static void
+attachcommenttonode(struct node *node, struct comment *comment)
+{
+    comment-&gt;next = node-&gt;comments;
+    node-&gt;comments = comment;
+}
+
+/***********************************************************************
+ * attachcomments : attach comments to applicable parse nodes
+ *
+ * Enter:   comment = first in (reversed) list of comment structs
+ *          root = root parse node (for attaching \file comment blocks to)
+ */
+static void
+attachcomments(struct comment *comment, struct node *root)
+{
+    while (comment) {
+        struct comment *next = comment-&gt;next;
+        /* See if there are any \param, \return, \throw, \def-api-feature or
+         * \def-device-cap cnodes to detach and attach
+         * elsewhere. (This only looks at top-level nodes, direct children
+         * of the root, so does not detach a \param inside a
+         * \def-device-cap.) */
+        struct cnode **pcnode = &amp;comment-&gt;root.children;
+        for (;;) {
+            struct cnode *cnode = *pcnode;
+            if (!cnode)
+                break;
+            if (cnode-&gt;funcs == &amp;param_funcs || cnode-&gt;funcs == &amp;return_funcs
+                    || cnode-&gt;funcs == &amp;throw_funcs)
+            {
+                /* Found a \param or \return or \throw to detach. Find the
+                 * parameter/exception of the same name, or the return type. */
+                struct node *node;
+                struct comment *newcomment;
+                if (cnode-&gt;funcs == &amp;param_funcs) {
+                    node = findparamidentifier(comment-&gt;node,
+                        ((struct paramcnode *)cnode)-&gt;name);
+                    if (!node)
+                        locerrorexit(comment-&gt;filename, cnode-&gt;linenum, &quot;no parameter '%s' found&quot;, ((struct paramcnode *)cnode)-&gt;name);
+                } else if (cnode-&gt;funcs == &amp;return_funcs) {
+                    node = findreturntype(comment-&gt;node);
+                    if (!node)
+                        locerrorexit(comment-&gt;filename, cnode-&gt;linenum, &quot;no return type found&quot;);
+                } else {
+                    node = findthrowidentifier(comment-&gt;node,
+                        ((struct paramcnode *)cnode)-&gt;name);
+                    if (!node)
+                        locerrorexit(comment-&gt;filename, cnode-&gt;linenum, &quot;no exception '%s' found&quot;, ((struct paramcnode *)cnode)-&gt;name);
+                }
+                /* Detach the cnode from its old comment. */
+                *pcnode = cnode-&gt;next;
+                /* Create a new comment struct to contain this cnode. */
+                newcomment = memalloc(sizeof(struct comment));
+                newcomment-&gt;root.funcs = &amp;root_funcs;
+                newcomment-&gt;linenum = cnode-&gt;linenum;
+                /* Attach the cnode. */
+                newcomment-&gt;root.children = cnode;
+                cnode-&gt;parent = &amp;newcomment-&gt;root;
+                cnode-&gt;next = 0;
+                /* Make the cnode a \return one, just so even a \param
+                 * uses return_output. */
+                cnode-&gt;funcs = &amp;return_funcs;
+                /* Attach the new comment struct to the parse node. */
+                attachcommenttonode(node, newcomment);
+            } else {
+                pcnode = &amp;cnode-&gt;next;
+            }
+        }
+        /* Now attach the comment to its identifier parse node. */
+        {
+            struct node *node = comment-&gt;node;
+            if (!node)
+                node = root;
+            attachcommenttonode(node, comment);
+        }
+        comment = next;
+    }
+}
+
+/***********************************************************************
+ * processcomments : join, parse and attach comments
+ *
+ * Enter:   root = root parse node
+ */
+void
+processcomments(struct node *root)
+{
+    comments = joininlinecomments(comments);
+    parsecomments(comments);
+    attachcomments(comments, root);
+}
+
+/***********************************************************************
+ * outputdescriptive : output descriptive elements for a node
+ *
+ * Enter:   node = identifier node that might have some comments
+ *          indent = indent (nesting) level
+ */
+void
+outputdescriptive(struct node *node, unsigned int indent)
+{
+    struct comment *comment = node-&gt;comments;
+    int indescriptive = 0;
+    while (comment) {
+        struct cnode *root = &amp;comment-&gt;root;
+        if (!indescriptive)
+            printf(&quot;%*s&lt;descriptive&gt;\n&quot;, indent, &quot;&quot;);
+        indescriptive = 1;
+        (*root-&gt;funcs-&gt;output)(root, indent + 2);
+        comment = comment-&gt;next;
+    }
+    if (indescriptive)
+        printf(&quot;%*s&lt;/descriptive&gt;\n&quot;, indent, &quot;&quot;);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrccommenth"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef comment_h
+#define comment_h
+
+struct tok;
+struct node;
+
+void addcomment(struct tok *tok);
+void setcommentnode(struct node *node2);
+void processcomments(struct node *root);
+void outputdescriptive(struct node *node, unsigned int indent);
+
+#endif /* ndef comment_h */
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcentitiesh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/entities.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/entities.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/entities.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,271 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef entities_h
+#define entities_h
+
+#define ENTITIES \
+&quot;nbsp\0&amp;#160;\0&quot; \
+&quot;iexcl\0&amp;#161;\0&quot; \
+&quot;cent\0&amp;#162;\0&quot; \
+&quot;pound\0&amp;#163;\0&quot; \
+&quot;curren\0&amp;#164;\0&quot; \
+&quot;yen\0&amp;#165;\0&quot; \
+&quot;brvbar\0&amp;#166;\0&quot; \
+&quot;sect\0&amp;#167;\0&quot; \
+&quot;uml\0&amp;#168;\0&quot; \
+&quot;copy\0&amp;#169;\0&quot; \
+&quot;ordf\0&amp;#170;\0&quot; \
+&quot;laquo\0&amp;#171;\0&quot; \
+&quot;not\0&amp;#172;\0&quot; \
+&quot;shy\0&amp;#173;\0&quot; \
+&quot;reg\0&amp;#174;\0&quot; \
+&quot;macr\0&amp;#175;\0&quot; \
+&quot;deg\0&amp;#176;\0&quot; \
+&quot;plusmn\0&amp;#177;\0&quot; \
+&quot;sup2\0&amp;#178;\0&quot; \
+&quot;sup3\0&amp;#179;\0&quot; \
+&quot;acute\0&amp;#180;\0&quot; \
+&quot;micro\0&amp;#181;\0&quot; \
+&quot;para\0&amp;#182;\0&quot; \
+&quot;middot\0&amp;#183;\0&quot; \
+&quot;cedil\0&amp;#184;\0&quot; \
+&quot;sup1\0&amp;#185;\0&quot; \
+&quot;ordm\0&amp;#186;\0&quot; \
+&quot;raquo\0&amp;#187;\0&quot; \
+&quot;frac14\0&amp;#188;\0&quot; \
+&quot;frac12\0&amp;#189;\0&quot; \
+&quot;frac34\0&amp;#190;\0&quot; \
+&quot;iquest\0&amp;#191;\0&quot; \
+&quot;Agrave\0&amp;#192;\0&quot; \
+&quot;Aacute\0&amp;#193;\0&quot; \
+&quot;Acirc\0&amp;#194;\0&quot; \
+&quot;Atilde\0&amp;#195;\0&quot; \
+&quot;Auml\0&amp;#196;\0&quot; \
+&quot;Aring\0&amp;#197;\0&quot; \
+&quot;AElig\0&amp;#198;\0&quot; \
+&quot;Ccedil\0&amp;#199;\0&quot; \
+&quot;Egrave\0&amp;#200;\0&quot; \
+&quot;Eacute\0&amp;#201;\0&quot; \
+&quot;Ecirc\0&amp;#202;\0&quot; \
+&quot;Euml\0&amp;#203;\0&quot; \
+&quot;Igrave\0&amp;#204;\0&quot; \
+&quot;Iacute\0&amp;#205;\0&quot; \
+&quot;Icirc\0&amp;#206;\0&quot; \
+&quot;Iuml\0&amp;#207;\0&quot; \
+&quot;ETH\0&amp;#208;\0&quot; \
+&quot;Ntilde\0&amp;#209;\0&quot; \
+&quot;Ograve\0&amp;#210;\0&quot; \
+&quot;Oacute\0&amp;#211;\0&quot; \
+&quot;Ocirc\0&amp;#212;\0&quot; \
+&quot;Otilde\0&amp;#213;\0&quot; \
+&quot;Ouml\0&amp;#214;\0&quot; \
+&quot;times\0&amp;#215;\0&quot; \
+&quot;Oslash\0&amp;#216;\0&quot; \
+&quot;Ugrave\0&amp;#217;\0&quot; \
+&quot;Uacute\0&amp;#218;\0&quot; \
+&quot;Ucirc\0&amp;#219;\0&quot; \
+&quot;Uuml\0&amp;#220;\0&quot; \
+&quot;Yacute\0&amp;#221;\0&quot; \
+&quot;THORN\0&amp;#222;\0&quot; \
+&quot;szlig\0&amp;#223;\0&quot; \
+&quot;agrave\0&amp;#224;\0&quot; \
+&quot;aacute\0&amp;#225;\0&quot; \
+&quot;acirc\0&amp;#226;\0&quot; \
+&quot;atilde\0&amp;#227;\0&quot; \
+&quot;auml\0&amp;#228;\0&quot; \
+&quot;aring\0&amp;#229;\0&quot; \
+&quot;aelig\0&amp;#230;\0&quot; \
+&quot;ccedil\0&amp;#231;\0&quot; \
+&quot;egrave\0&amp;#232;\0&quot; \
+&quot;eacute\0&amp;#233;\0&quot; \
+&quot;ecirc\0&amp;#234;\0&quot; \
+&quot;euml\0&amp;#235;\0&quot; \
+&quot;igrave\0&amp;#236;\0&quot; \
+&quot;iacute\0&amp;#237;\0&quot; \
+&quot;icirc\0&amp;#238;\0&quot; \
+&quot;iuml\0&amp;#239;\0&quot; \
+&quot;eth\0&amp;#240;\0&quot; \
+&quot;ntilde\0&amp;#241;\0&quot; \
+&quot;ograve\0&amp;#242;\0&quot; \
+&quot;oacute\0&amp;#243;\0&quot; \
+&quot;ocirc\0&amp;#244;\0&quot; \
+&quot;otilde\0&amp;#245;\0&quot; \
+&quot;ouml\0&amp;#246;\0&quot; \
+&quot;divide\0&amp;#247;\0&quot; \
+&quot;oslash\0&amp;#248;\0&quot; \
+&quot;ugrave\0&amp;#249;\0&quot; \
+&quot;uacute\0&amp;#250;\0&quot; \
+&quot;ucirc\0&amp;#251;\0&quot; \
+&quot;uuml\0&amp;#252;\0&quot; \
+&quot;yacute\0&amp;#253;\0&quot; \
+&quot;thorn\0&amp;#254;\0&quot; \
+&quot;yuml\0&amp;#255;\0&quot; \
+&quot;fnof\0&amp;#402;\0&quot; \
+&quot;Alpha\0&amp;#913;\0&quot; \
+&quot;Beta\0&amp;#914;\0&quot; \
+&quot;Gamma\0&amp;#915;\0&quot; \
+&quot;Delta\0&amp;#916;\0&quot; \
+&quot;Epsilon\0&amp;#917;\0&quot; \
+&quot;Zeta\0&amp;#918;\0&quot; \
+&quot;Eta\0&amp;#919;\0&quot; \
+&quot;Theta\0&amp;#920;\0&quot; \
+&quot;Iota\0&amp;#921;\0&quot; \
+&quot;Kappa\0&amp;#922;\0&quot; \
+&quot;Lambda\0&amp;#923;\0&quot; \
+&quot;Mu\0&amp;#924;\0&quot; \
+&quot;Nu\0&amp;#925;\0&quot; \
+&quot;Xi\0&amp;#926;\0&quot; \
+&quot;Omicron\0&amp;#927;\0&quot; \
+&quot;Pi\0&amp;#928;\0&quot; \
+&quot;Rho\0&amp;#929;\0&quot; \
+&quot;Sigma\0&amp;#931;\0&quot; \
+&quot;Tau\0&amp;#932;\0&quot; \
+&quot;Upsilon\0&amp;#933;\0&quot; \
+&quot;Phi\0&amp;#934;\0&quot; \
+&quot;Chi\0&amp;#935;\0&quot; \
+&quot;Psi\0&amp;#936;\0&quot; \
+&quot;Omega\0&amp;#937;\0&quot; \
+&quot;alpha\0&amp;#945;\0&quot; \
+&quot;beta\0&amp;#946;\0&quot; \
+&quot;gamma\0&amp;#947;\0&quot; \
+&quot;delta\0&amp;#948;\0&quot; \
+&quot;epsilon\0&amp;#949;\0&quot; \
+&quot;zeta\0&amp;#950;\0&quot; \
+&quot;eta\0&amp;#951;\0&quot; \
+&quot;theta\0&amp;#952;\0&quot; \
+&quot;iota\0&amp;#953;\0&quot; \
+&quot;kappa\0&amp;#954;\0&quot; \
+&quot;lambda\0&amp;#955;\0&quot; \
+&quot;mu\0&amp;#956;\0&quot; \
+&quot;nu\0&amp;#957;\0&quot; \
+&quot;xi\0&amp;#958;\0&quot; \
+&quot;omicron\0&amp;#959;\0&quot; \
+&quot;pi\0&amp;#960;\0&quot; \
+&quot;rho\0&amp;#961;\0&quot; \
+&quot;sigmaf\0&amp;#962;\0&quot; \
+&quot;sigma\0&amp;#963;\0&quot; \
+&quot;tau\0&amp;#964;\0&quot; \
+&quot;upsilon\0&amp;#965;\0&quot; \
+&quot;phi\0&amp;#966;\0&quot; \
+&quot;chi\0&amp;#967;\0&quot; \
+&quot;psi\0&amp;#968;\0&quot; \
+&quot;omega\0&amp;#969;\0&quot; \
+&quot;thetasym\0&amp;#977;\0&quot; \
+&quot;upsih\0&amp;#978;\0&quot; \
+&quot;piv\0&amp;#982;\0&quot; \
+&quot;bull\0&amp;#8226;\0&quot; \
+&quot;hellip\0&amp;#8230;\0&quot; \
+&quot;prime\0&amp;#8242;\0&quot; \
+&quot;Prime\0&amp;#8243;\0&quot; \
+&quot;oline\0&amp;#8254;\0&quot; \
+&quot;frasl\0&amp;#8260;\0&quot; \
+&quot;weierp\0&amp;#8472;\0&quot; \
+&quot;image\0&amp;#8465;\0&quot; \
+&quot;real\0&amp;#8476;\0&quot; \
+&quot;trade\0&amp;#8482;\0&quot; \
+&quot;alefsym\0&amp;#8501;\0&quot; \
+&quot;larr\0&amp;#8592;\0&quot; \
+&quot;uarr\0&amp;#8593;\0&quot; \
+&quot;rarr\0&amp;#8594;\0&quot; \
+&quot;darr\0&amp;#8595;\0&quot; \
+&quot;harr\0&amp;#8596;\0&quot; \
+&quot;crarr\0&amp;#8629;\0&quot; \
+&quot;lArr\0&amp;#8656;\0&quot; \
+&quot;uArr\0&amp;#8657;\0&quot; \
+&quot;rArr\0&amp;#8658;\0&quot; \
+&quot;dArr\0&amp;#8659;\0&quot; \
+&quot;hArr\0&amp;#8660;\0&quot; \
+&quot;forall\0&amp;#8704;\0&quot; \
+&quot;part\0&amp;#8706;\0&quot; \
+&quot;exist\0&amp;#8707;\0&quot; \
+&quot;empty\0&amp;#8709;\0&quot; \
+&quot;nabla\0&amp;#8711;\0&quot; \
+&quot;isin\0&amp;#8712;\0&quot; \
+&quot;notin\0&amp;#8713;\0&quot; \
+&quot;ni\0&amp;#8715;\0&quot; \
+&quot;prod\0&amp;#8719;\0&quot; \
+&quot;sum\0&amp;#8721;\0&quot; \
+&quot;minus\0&amp;#8722;\0&quot; \
+&quot;lowast\0&amp;#8727;\0&quot; \
+&quot;radic\0&amp;#8730;\0&quot; \
+&quot;prop\0&amp;#8733;\0&quot; \
+&quot;infin\0&amp;#8734;\0&quot; \
+&quot;ang\0&amp;#8736;\0&quot; \
+&quot;and\0&amp;#8743;\0&quot; \
+&quot;or\0&amp;#8744;\0&quot; \
+&quot;cap\0&amp;#8745;\0&quot; \
+&quot;cup\0&amp;#8746;\0&quot; \
+&quot;int\0&amp;#8747;\0&quot; \
+&quot;there4\0&amp;#8756;\0&quot; \
+&quot;sim\0&amp;#8764;\0&quot; \
+&quot;cong\0&amp;#8773;\0&quot; \
+&quot;asymp\0&amp;#8776;\0&quot; \
+&quot;ne\0&amp;#8800;\0&quot; \
+&quot;equiv\0&amp;#8801;\0&quot; \
+&quot;le\0&amp;#8804;\0&quot; \
+&quot;ge\0&amp;#8805;\0&quot; \
+&quot;sub\0&amp;#8834;\0&quot; \
+&quot;sup\0&amp;#8835;\0&quot; \
+&quot;nsub\0&amp;#8836;\0&quot; \
+&quot;sube\0&amp;#8838;\0&quot; \
+&quot;supe\0&amp;#8839;\0&quot; \
+&quot;oplus\0&amp;#8853;\0&quot; \
+&quot;otimes\0&amp;#8855;\0&quot; \
+&quot;perp\0&amp;#8869;\0&quot; \
+&quot;sdot\0&amp;#8901;\0&quot; \
+&quot;lceil\0&amp;#8968;\0&quot; \
+&quot;rceil\0&amp;#8969;\0&quot; \
+&quot;lfloor\0&amp;#8970;\0&quot; \
+&quot;rfloor\0&amp;#8971;\0&quot; \
+&quot;lang\0&amp;#9001;\0&quot; \
+&quot;rang\0&amp;#9002;\0&quot; \
+&quot;loz\0&amp;#9674;\0&quot; \
+&quot;spades\0&amp;#9824;\0&quot; \
+&quot;clubs\0&amp;#9827;\0&quot; \
+&quot;hearts\0&amp;#9829;\0&quot; \
+&quot;diams\0&amp;#9830;\0&quot; \
+&quot;quot\0&amp;#34;\0&quot; \
+&quot;amp\0&amp;#38;\0&quot; \
+&quot;lt\0&amp;#60;\0&quot; \
+&quot;gt\0&amp;#62;\0&quot; \
+&quot;OElig\0&amp;#338;\0&quot; \
+&quot;oelig\0&amp;#339;\0&quot; \
+&quot;Scaron\0&amp;#352;\0&quot; \
+&quot;scaron\0&amp;#353;\0&quot; \
+&quot;Yuml\0&amp;#376;\0&quot; \
+&quot;circ\0&amp;#710;\0&quot; \
+&quot;tilde\0&amp;#732;\0&quot; \
+&quot;ensp\0&amp;#8194;\0&quot; \
+&quot;emsp\0&amp;#8195;\0&quot; \
+&quot;thinsp\0&amp;#8201;\0&quot; \
+&quot;zwnj\0&amp;#8204;\0&quot; \
+&quot;zwj\0&amp;#8205;\0&quot; \
+&quot;lrm\0&amp;#8206;\0&quot; \
+&quot;rlm\0&amp;#8207;\0&quot; \
+&quot;ndash\0&amp;#8211;\0&quot; \
+&quot;mdash\0&amp;#8212;\0&quot; \
+&quot;lsquo\0&amp;#8216;\0&quot; \
+&quot;rsquo\0&amp;#8217;\0&quot; \
+&quot;sbquo\0&amp;#8218;\0&quot; \
+&quot;ldquo\0&amp;#8220;\0&quot; \
+&quot;rdquo\0&amp;#8221;\0&quot; \
+&quot;bdquo\0&amp;#8222;\0&quot; \
+&quot;dagger\0&amp;#8224;\0&quot; \
+&quot;Dagger\0&amp;#8225;\0&quot; \
+&quot;permil\0&amp;#8240;\0&quot; \
+&quot;lsaquo\0&amp;#8249;\0&quot; \
+&quot;rsaquo\0&amp;#8250;\0&quot; \
+&quot;euro\0&amp;#8364;\0&quot;
+
+#endif /* ndef entities_h */
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrclexc"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,560 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#include &lt;assert.h&gt;
+#include &lt;errno.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &quot;lex.h&quot;
+#include &quot;misc.h&quot;
+#include &quot;node.h&quot;
+#include &quot;process.h&quot;
+
+struct file {
+    struct file *next;
+    const char *filename;
+    char *buf;
+    const char *pos, *end;
+    unsigned int linenum;
+};
+
+const char keywords[] = KEYWORDS;
+
+static struct file *file, *firstfile;
+static struct tok tok;
+
+/***********************************************************************
+ * readinput : read all input files into memory
+ *
+ * Enter:   argv = 0-terminated array of filenames
+ */
+void
+readinput(const char *const *argv)
+{
+    struct file **pfile = &amp;file;
+    for (;;) {
+        struct file *file;
+        const char *filename = *argv++;
+        char *buf = 0;
+        int len = 0, thislen, isstdin;
+        FILE *handle;
+        if (!filename)
+            break;
+        /* Read the file. */
+        isstdin = !strcmp(filename, &quot;-&quot;);
+        if (isstdin) {
+            handle = stdin;
+            filename = &quot;&lt;stdin&gt;&quot;;
+        } else {
+            handle = fopen(filename, &quot;rb&quot;);
+            if (!handle)
+                errorexit(&quot;%s: %s&quot;, filename, strerror(errno));
+        }
+        for (;;) {
+            thislen = len ? len * 2 : 4096;
+            buf = memrealloc(buf, len + thislen + 1);
+            thislen = fread(buf + len, 1, thislen, handle);
+            if (!thislen)
+                break;
+            len += thislen;
+        }
+        if (ferror(handle))
+            errorexit(&quot;%s: I/O error&quot;, filename);
+        if (!isstdin)
+            fclose(handle);
+        buf[len] = 0;
+        buf = memrealloc(buf, len + 1);
+        /* Create the file struct for it. */
+        file = memalloc(sizeof(struct file));
+        *pfile = file;
+        pfile = &amp;file-&gt;next;
+        file-&gt;filename = filename;
+        file-&gt;pos = file-&gt;buf = buf;
+        file-&gt;end = buf + len;
+        file-&gt;linenum = 1;
+    }
+    *pfile = 0;
+    firstfile = file;
+}
+
+/***********************************************************************
+ * lexerrorexit : error and exit with line number
+ */
+static void
+lexerrorexit(const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vlocerrorexit(file-&gt;filename, file-&gt;linenum, format, ap);
+    va_end(ap);
+}
+
+/***********************************************************************
+ * lexblockcomment : lex a block comment
+ *
+ * Enter:   start = start of comment
+ *
+ * Return:  tok struct, lifetime until next call to lex
+ */
+static struct tok *
+lexblockcomment(const char *start)
+{
+    const char *p = start + 1;
+    tok.filename = file-&gt;filename;
+    tok.linenum = file-&gt;linenum;
+    for (;;) {
+        int ch = *++p;
+        if (!ch)
+            lexerrorexit(&quot;unterminated block comment&quot;);
+        if (ch != '*') {
+            if (ch == '\n')
+                file-&gt;linenum++;
+            continue;
+        }
+        ch = p[1];
+        if (!ch)
+            lexerrorexit(&quot;unterminated block comment&quot;);
+        if (ch == '/')
+            break;
+    }
+    p += 2;
+    file-&gt;pos = p;
+    tok.type = TOK_BLOCKCOMMENT;
+    tok.start = start + 2;
+    tok.len = p - start - 4;
+    return &amp;tok;
+}
+
+/***********************************************************************
+ * lexinlinecomment : lex an inline comment
+ *
+ * Enter:   start = start of comment, starts with &quot;//&quot;
+ *
+ * Return:  tok struct, lifetime until next call to lex
+ */
+static struct tok *
+lexinlinecomment(const char *start)
+{
+    const char *p = start + 2;
+    p = start + 1;
+    for (;;) {
+        int ch = *++p;
+        if (!ch || ch == '\n')
+            break;
+    }
+    p++;
+    file-&gt;pos = p;
+    tok.type = TOK_INLINECOMMENT;
+    tok.start = start + 2;
+    tok.len = p - start - 2;
+    tok.filename = file-&gt;filename;
+    tok.linenum = file-&gt;linenum++;
+    return &amp;tok;
+}
+
+/***********************************************************************
+ * lexnumber : lex a number (or just a '-' symbol)
+ *
+ * Enter:   start = start of token
+ *
+ * Return:  tok struct, lifetime until next call to lex
+ *
+ * The IDL grammar seems to say that a float can't start with a
+ * decimal point, so that's what we have implemented here.
+ */
+static struct tok *
+lexnumber(const char *start)
+{
+    for (;;) {
+        const char *p = start;
+        const char *octalend = start;
+        int ch = *p;
+        enum { STATE_START, STATE_INT, STATE_HEX, STATE_OCTAL, STATE_BADOCTAL,
+                STATE_DP, STATE_EXPSTART, STATE_EXPSIGN, STATE_EXP
+                } state = STATE_START;
+        if (ch == '-') {
+            ch = *++p;
+            if (ch == 'I') { // starts of Infinity
+              char * infinity = &quot;-Infinity&quot;;
+              unsigned int len = strlen(infinity);
+              if (!memcmp(start, infinity, len)) {
+                tok.type = TOK_minusinfinity;
+                tok.start = start;
+                tok.len = len;
+                tok.filename = file-&gt;filename;
+                tok.linenum = file-&gt;linenum;
+                file-&gt;pos = start + len;
+                return &amp;tok;
+              }
+            }
+        }
+        if (ch == '0') {
+            state = STATE_OCTAL;
+            ch = *++p;
+            if ((ch &amp; ~0x20) == 'X') {
+                state = STATE_HEX;
+                ch = *++p;
+            }
+        }
+
+        for (;;) {
+            if ((unsigned)(ch - '0') &gt;= 8) {
+                if ((ch &amp; -2) == '8') {
+                    if (state == STATE_OCTAL) {
+                        state = STATE_BADOCTAL;
+                        octalend = p;
+                    }
+                } else if ((unsigned)((ch &amp; ~0x20) - 'A') &lt;= 'F' - 'A') {
+                    if (state != STATE_HEX) {
+                        if ((ch &amp; ~0x20) != 'E')
+                            break;
+                        if (state == STATE_HEX || state &gt;= STATE_EXPSTART || state == STATE_START)
+                            break;
+                        state = STATE_EXPSTART;
+                    }
+                } else if (ch == '.') {
+                    if (state == STATE_HEX || state &gt;= STATE_DP)
+                        break;
+                    state = STATE_DP;
+                } else if (ch == '-') {
+                    if (state != STATE_EXPSTART)
+                        break;
+                    state = STATE_EXPSIGN;
+                } else
+                    break;
+            }
+            ch = *++p;
+            if (state == STATE_START)
+                state = STATE_INT;
+            else if (state == STATE_EXPSTART || state == STATE_EXPSIGN)
+                state = STATE_EXP;
+        }
+        switch (state) {
+        case STATE_START:
+            /* Must have just been a - character by itself. */
+            tok.type = '-';
+            p = start + 1;
+            break;
+        case STATE_BADOCTAL:
+            p = octalend;
+            /* fall through... */
+        case STATE_INT:
+        case STATE_OCTAL:
+            tok.type = TOK_INTEGER;
+            break;
+        case STATE_HEX:
+            if (p - start == 2 || (p - start == 3 &amp;&amp; *start == '-'))
+                p = start + 1;
+            tok.type = TOK_INTEGER;
+            break;
+        case STATE_EXP:
+        case STATE_DP:
+            tok.type = TOK_FLOAT;
+            break;
+        case STATE_EXPSIGN:
+            p--;
+            /* fall through... */
+        case STATE_EXPSTART:
+            p--;
+            tok.type = TOK_FLOAT;
+            break;
+        }
+        tok.start = start;
+        tok.len = p - start;
+        tok.filename = file-&gt;filename;
+        tok.linenum = file-&gt;linenum;
+        file-&gt;pos = p;
+        return &amp;tok;
+    }
+}
+
+/***********************************************************************
+ * lexstring : lex a quoted string
+ *
+ * Enter:   start = start of token
+ *
+ * Return:  tok struct, lifetime until next call to lex
+ */
+static struct tok *
+lexstring(const char *start)
+{
+    for (;;) {
+        const char *p = start + 1;
+        int ch = *p;
+        for (;;) {
+            if (!ch || ch == '\n')
+                lexerrorexit(&quot;unterminated string&quot;);
+            if (ch == '&quot;') {
+                tok.type = TOK_STRING;
+                tok.start = start + 1;
+                tok.len = p - start - 1;
+                tok.filename = file-&gt;filename;
+                tok.linenum = file-&gt;linenum;
+                file-&gt;pos = p + 1;
+                return &amp;tok;
+            }
+            /* Note the IDL spec doesn't seem to allow for escape sequences
+             * in strings. */
+            ch = *++p;
+        }
+    }
+}
+
+/***********************************************************************
+ * lexidentifier : lex an identifier
+ *
+ * Enter:   start = start of token
+ *
+ * Return:  tok struct, lifetime until next call to lex
+ */
+static struct tok *
+lexidentifier(const char *start)
+{
+    const char *p = start + 1;
+    for (;;) {
+        int ch = *p;
+        if (ch != '_' &amp;&amp; (unsigned)(ch - '0') &gt;= 10
+                &amp;&amp; (unsigned)((ch &amp; ~0x20) - 'A') &gt; 'Z' - 'A')
+        {
+            break;
+        }
+        p++;
+    }
+    tok.type = TOK_IDENTIFIER;
+    tok.start = start;
+    tok.len = p - start;
+    tok.filename = file-&gt;filename;
+    tok.linenum = file-&gt;linenum;
+    file-&gt;pos = p;
+    /* See if this is a keyword. (This search is a bit n-squared.) */
+    {
+        unsigned int type = TOK_DOMString;
+        p = keywords;
+        for (;;) {
+            unsigned int len = strlen(p);
+            if (!len)
+                break;
+            if (len == tok.len &amp;&amp; !memcmp(start, p, len)) {
+                tok.type = type;
+                break;
+            }
+            p += len + 1;
+            type++;
+        }
+    }
+    return &amp;tok;
+}
+
+/***********************************************************************
+ * lex : retrieve next token
+ *
+ * Return:  tok struct, lifetime until next call to lex
+ */
+struct tok *
+lex(void)
+{
+    const char *p;
+    int ch;
+    for (;;) {
+        if (!file) {
+            tok.type = TOK_EOF;
+            tok.start = &quot;end of file&quot;;
+            tok.len = strlen(tok.start);
+            return &amp;tok;
+        }
+        tok.prestart = p = file-&gt;pos;
+        /* Flush whitespace. */
+        for (;;) {
+            ch = *p++;
+            switch (ch) {
+            case ' ':
+            case '\t':
+            case '\r':
+                continue;
+            case '\n':
+                ++file-&gt;linenum;
+                tok.prestart = p;
+                continue;
+            }
+            break;
+        }
+        p--;
+        if (ch)
+            break;
+        if (p != file-&gt;end)
+            lexerrorexit(&quot;\\0 byte not allowed&quot;);
+        file = file-&gt;next;
+    }
+    /* See if we have a comment. */
+    tok.start = p;
+    if (ch == '/') {
+        switch (*++p) {
+        case '*':
+            return lexblockcomment(p - 1);
+        case '/':
+            return lexinlinecomment(p - 1);
+        }
+        tok.type = '/';
+    } else {
+        /* Handle things that start with '-', which is either '-' as a token,
+         * or a number. Handle numbers. */
+        if (ch == '-' || (unsigned)(ch - '0') &lt; 10)
+            return lexnumber(p);
+        /* Handle string. */
+        if (ch == '&quot;')
+            return lexstring(p);
+        /* Handle identifier. */
+        if (ch == '_' || (unsigned)((ch &amp; ~0x20) - 'A') &lt;= 'Z' - 'A')
+            return lexidentifier(p);
+        /* The only multi-symbol token are ... and [] */
+        if (ch == '.') {
+            tok.type = '.';
+            if (*++p == '.' &amp;&amp; p[1] == '.') {
+                tok.type = TOK_ELLIPSIS;
+                p += 2;
+            }
+            goto done;
+        }
+        if (ch == '[') {
+            tok.type = '[';
+            if (*++p == ']') {
+                tok.type = TOK_DOUBLEBRACKET;
+                p++;
+            }
+            goto done;
+        }
+    }
+    /* Single symbol token. */
+    tok.type = ch;
+    p++;
+done:
+    tok.filename = file-&gt;filename;
+    tok.linenum = file-&gt;linenum;
+    tok.len = p - tok.start;
+    file-&gt;pos = p;
+    return &amp;tok;
+}
+
+/***********************************************************************
+ * outputwidl : output literal Web IDL input that node was parsed from
+ *
+ * Enter:   node = parse node to output literal Web IDL for
+ */
+void
+outputwidl(struct node *node)
+{
+    const char *start = node-&gt;wsstart, *end = node-&gt;end;
+    /* Find the file that start is in. */
+    struct file *file = firstfile;
+    while (start &lt; file-&gt;buf || start &gt;= file-&gt;end) {
+        file = file-&gt;next;
+        assert(file);
+    }
+    /* Find the (current or) next node that has node-&gt;start set. Any such
+     * node needs to be put inside a &lt;ref&gt; element. */
+    while (node &amp;&amp; !node-&gt;start)
+        node = nodewalk(node);
+    /* Output until we get to the end. This has to cope with the text
+     * spanning multiple input files. */
+    for (;;) {
+        int final = end &gt;= file-&gt;buf &amp;&amp; end &lt;= file-&gt;end;
+        const char *thisend = final ? end : file-&gt;end;
+        /* Output the Web IDL, omitting comments. */
+        while (start != end) {
+            const char *p, *p2, *comment, *endcomment;
+            int ch;
+            if (node &amp;&amp; start == node-&gt;start) {
+                /* We are on the start of the present node in the tree
+                 * walk. Put it in a &lt;ref&gt;. */
+                fputs(&quot;&lt;ref&gt;&quot;, stdout);
+                printtext(node-&gt;start, node-&gt;end - node-&gt;start, 1);
+                fputs(&quot;&lt;/ref&gt;&quot;, stdout);
+                start = node-&gt;end;
+                /* Skip to the next node with node-&gt;start set if any. */
+                do
+                    node = nodewalk(node);
+                while (node &amp;&amp; !node-&gt;start);
+                continue;
+            }
+            p2 = thisend;
+            if (node &amp;&amp; node-&gt;start &gt;= file-&gt;buf &amp;&amp; node-&gt;start &lt; p2)
+                p2 = node-&gt;start;
+            p = memchr(start, '/', p2 - start);
+            if (!p) {
+                printtext(start, p2 - start, 1);
+                if (p2 != thisend) {
+                    start = p2;
+                    continue;
+                }
+                break;
+            }
+            /* See if we're at the start of a comment. If so find the end. */
+            comment = 0;
+            if (p + 1 != thisend) {
+                switch (p[1]) {
+                case '*':
+                    /* Block comment. */
+                    comment = p;
+                    p++;
+                    do 
+                        p = memchr(p + 1, '*', thisend - p - 1);
+                    while (p[1] != '/');
+                    endcomment = p + 2;
+                    break;
+                case '/':
+                    /* Inline comment. */
+                    comment = p;
+                    p = memchr(p, '\n', thisend - p);
+                    if (!p)
+                        p = thisend;
+                    endcomment = p;
+                    break;
+                }
+            }
+            if (!comment) {
+                /* Not at start of comment. */
+                p++;
+                printtext(start, p - start, 1);
+                start = p;
+                assert(start &lt;= end);
+                continue;
+            }
+            /* If the comment has only whitespace before it on the line,
+             * eat that up. */
+            p = comment;
+            while (p != start &amp;&amp; ((ch = p[-1]) == ' ' || ch == '\t'))
+                p--;
+            if (p == start || p[-1] == '\n') {
+                comment = p;
+                /* If the comment has only whitespace after it to the end
+                 * of the line, eat that and the newline up. This always
+                 * happens for an inline comment on a line by itself. */
+                p = endcomment;
+                while (p != thisend &amp;&amp; ((ch = *p) == ' ' || ch == '\t'))
+                    p++;
+                if (p != thisend &amp;&amp; *p == '\n')
+                    p++;
+                endcomment = p;
+            }
+            printtext(start, comment - start, 1);
+            start = endcomment;
+            if (start &gt; thisend)
+                start = thisend;
+        }
+        if (final)
+            break;
+        file = file-&gt;next;
+        assert(file);
+        start = file-&gt;buf;
+    }
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrclexh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,141 @@
</span><ins>+
+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef lex_h
+#define lex_h
+
+// starting from &quot;attribute&quot; are the list of names allowed as arguments identifier
+#define KEYWORDS \
+    &quot;DOMString\0&quot; \
+    &quot;ByteString\0&quot; \
+    &quot;Date\0&quot; \
+    &quot;RegExp\0&quot; \
+    &quot;false\0&quot; \
+    &quot;object\0&quot; \
+    &quot;true\0&quot; \
+    &quot;any\0&quot; \
+    &quot;boolean\0&quot; \
+    &quot;byte\0&quot; \
+    &quot;double\0&quot; \
+    &quot;float\0&quot; \
+    &quot;Infinity\0&quot; \
+    &quot;-Infinity\0&quot; \
+    &quot;iterator\0&quot; \
+    &quot;long\0&quot; \
+    &quot;NaN\0&quot; \
+    &quot;null\0&quot; \
+    &quot;octet\0&quot; \
+    &quot;optional\0&quot; \
+    &quot;or\0&quot; \
+    &quot;readonly\0&quot; \
+    &quot;sequence\0&quot; \
+    &quot;short\0&quot; \
+    &quot;unsigned\0&quot; \
+    &quot;void\0&quot; \
+    &quot;attribute\0&quot; \
+    &quot;callback\0&quot; \
+    &quot;const\0&quot; \
+    &quot;creator\0&quot; \
+    &quot;deleter\0&quot; \
+    &quot;dictionary\0&quot; \
+    &quot;enum\0&quot; \
+    &quot;exception\0&quot; \
+    &quot;getter\0&quot; \
+    &quot;implements\0&quot; \
+    &quot;inherit\0&quot; \
+    &quot;interface\0&quot; \
+    &quot;legacycaller\0&quot; \
+    &quot;partial\0&quot; \
+    &quot;serializer\0&quot; \
+    &quot;setter\0&quot; \
+    &quot;static\0&quot; \
+    &quot;stringifier\0&quot; \
+    &quot;typedef\0&quot; \
+    &quot;unrestricted\0&quot;
+
+
+enum toktype {
+    TOK_EOF = -1,
+    TOK_BLOCKCOMMENT = 0x80,
+    TOK_INLINECOMMENT, TOK_INTEGER, TOK_FLOAT, TOK_IDENTIFIER,
+    TOK_STRING, TOK_ELLIPSIS, TOK_DOUBLEBRACKET,
+    /* Keywords must be in the same order as above. */
+    TOK_DOMString,
+    TOK_ByteString,
+    TOK_Date,
+    TOK_RegExp,
+    TOK_false,
+    TOK_object,
+    TOK_true,
+    TOK_any,
+    TOK_boolean,
+    TOK_byte,
+    TOK_double,
+    TOK_float,
+    TOK_infinity,
+    TOK_minusinfinity,
+    TOK_iterator,
+    TOK_long,
+    TOK_NaN,
+    TOK_null,
+    TOK_octet,
+    TOK_optional,
+    TOK_or,
+    TOK_readonly,
+    TOK_sequence,
+    TOK_short,
+    TOK_unsigned,
+    TOK_void,
+    /* Below that line are keywords that are allowed as arguments names */
+    TOK_attribute,
+    TOK_callback,
+    TOK_const,
+    TOK_creator,
+    TOK_deleter,
+    TOK_dictionary,
+    TOK_enum,
+    TOK_exception,
+    TOK_getter,
+    TOK_implements,
+    TOK_inherit,
+    TOK_interface,
+    TOK_legacycaller,
+    TOK_partial,
+    TOK_serializer,
+    TOK_setter,
+    TOK_static,
+    TOK_stringifier,
+    TOK_typedef,
+    TOK_unrestricted,
+};
+
+struct tok {
+    enum toktype type;
+    const char *filename;
+    unsigned int linenum;
+    const char *prestart;
+    const char *start;
+    unsigned int len;
+};
+
+extern const char *filename;
+extern const char keywords[];
+
+struct node;
+
+void readinput(const char *const *argv);
+struct tok *lex(void);
+void outputwidl(struct node *node);
+
+#endif /* ndef lex_h */
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcmainc"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/main.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/main.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/main.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#include &lt;string.h&gt;
+#include &quot;misc.h&quot;
+#include &quot;process.h&quot;
+
+static const char nodtdopt[] = &quot;-no-dtd-ref&quot;;
+const char *progname;
+
+/***********************************************************************
+ * options : process command line options
+ *
+ * Enter:   argv
+ *
+ * Return:  argv stepped to point to first non-option argument
+ */
+static const char *const *
+options(int argc, const char *const *argv)
+{
+    /* Set progname for error messages etc. */
+    {
+        const char *base;
+        progname = argv[0];
+        base = strrchr(progname, '/');
+#ifdef DIRSEP
+        {
+            const char *base2 = strrchr(base, '\\');
+            if (base2 &gt; base)
+                base = base2;
+        }
+#endif /* def DIRSEP */
+        if (base)
+            progname = base + 1;
+    }
+    return (argc &gt; 1 &amp;&amp; strncmp(argv[1], nodtdopt, sizeof nodtdopt) == 0)
+          ? argv + 2 : argv + 1;
+}
+
+/***********************************************************************
+ * main : main code for bondiidl command
+ */
+int
+main(int argc, char **argv)
+{
+    const char *const *parg;
+    parg = options(argc, (const char *const *)argv);
+    if (!*parg)
+        errorexit(&quot;usage: %s [-no-dtd-ref] &lt;interface&gt;.widl ...&quot;, progname);
+    processfiles(parg, parg == (const char *const *)argv + 1);
+    return 0;
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcmiscc"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,119 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#include &lt;stdarg.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;stdlib.h&gt;
+#include &lt;string.h&gt;
+#include &quot;misc.h&quot;
+#include &quot;os.h&quot; /* to get va_copy on windows */
+
+extern const char *progname;
+
+/***********************************************************************
+ * memory allocation wrappers
+ */
+void *
+memalloc(size_t size)
+{
+    void *ptr = malloc(size);
+    if (!ptr)
+        errorexit(&quot;out of memory&quot;);
+    /* Zero initialise memory from memalloc. */
+    memset(ptr, 0, size);
+    return ptr;
+}
+
+void *
+memrealloc(void *ptr, size_t size)
+{
+    void *newptr = realloc(ptr, size);
+    if (!newptr)
+        errorexit(&quot;out of memory&quot;);
+    return newptr;
+}
+
+void
+memfree(void *ptr)
+{
+    *(int *)ptr = 0xfefefefe;
+    free(ptr);
+}
+
+/***********************************************************************
+ * vmemprintf, memprintf : allocate buffer and sprintf into it
+ */
+char *
+memprintf(const char *format, ...)
+{
+    va_list ap;
+    char *buf;
+    va_start(ap, format);
+    buf = vmemprintf(format, ap);
+    va_end(ap);
+    return buf;
+}
+
+char *
+vmemprintf(const char *format, va_list ap)
+{
+    char *buf;
+    unsigned int max, len;
+    va_list ap2;
+    max = 16;
+    for (;;) {
+        va_copy(ap2, ap);
+        buf = memalloc(max);
+        len = vsnprintf(buf, max, format, ap2);
+        va_end(ap2);
+        if (len &lt; max)
+            break;
+        memfree(buf);
+        max *= 2;
+    }
+    return buf;
+}
+
+/***********************************************************************
+ * errorexit : print error message then exit
+ */
+void
+vlocerrorexit(const char *filename, unsigned int linenum,
+        const char *format, va_list ap)
+{
+    if (filename)
+        fprintf(stderr, linenum ? &quot;%s: %i: &quot; : &quot;%s: &quot;, filename, linenum);
+    vfprintf(stderr, format, ap);
+    fputc('\n', stderr);
+    exit(1);
+}
+
+void
+locerrorexit(const char *filename, unsigned int linenum,
+        const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vlocerrorexit(filename, linenum, format, ap);
+    va_end(ap);
+}
+
+void
+errorexit(const char *format, ...)
+{
+    va_list ap;
+    va_start(ap, format);
+    vlocerrorexit(0, 0, format, ap);
+    va_end(ap);
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcmisch"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef misc_h
+#define misc_h
+#include &lt;stdarg.h&gt;
+#include &lt;stdlib.h&gt;
+
+void *memalloc(size_t size);
+void *memrealloc(void *ptr, size_t size);
+void memfree(void *ptr);
+
+char *vmemprintf(const char *format, va_list ap);
+char *memprintf(const char *format, ...);
+
+void vlocerrorexit(const char *filename, unsigned int linenum, const char *format, va_list ap);
+void locerrorexit(const char *filename, unsigned int linenum, const char *format, ...);
+void errorexit(const char *format, ...);
+
+#endif /* ndef misc_h */
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcnodec"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,331 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Node-specific functions
+ ***********************************************************************/
+#include &lt;assert.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &quot;comment.h&quot;
+#include &quot;lex.h&quot;
+#include &quot;misc.h&quot;
+#include &quot;node.h&quot;
+#include &quot;process.h&quot;
+
+struct node *
+newelement(const char *name)
+{
+    struct element *element = memalloc(sizeof(struct element));
+    element-&gt;n.type = NODE_ELEMENT;
+    element-&gt;name = name;
+    return &amp;element-&gt;n;
+}
+
+struct node *
+newattr(const char *name, const char *val)
+{
+    struct attr *attr = memalloc(sizeof(struct attr));
+    attr-&gt;n.type = NODE_ATTR;
+    attr-&gt;name = name;
+    attr-&gt;value = val;
+    return &amp;attr-&gt;n;
+}
+
+struct node *
+newattrlist(void)
+{
+    struct attrlist *attrlist = memalloc(sizeof(struct attrlist));
+    attrlist-&gt;n.type = NODE_ATTRLIST;
+    return &amp;attrlist-&gt;n;
+}
+
+/***********************************************************************
+ * addnode : add node as child of another node
+ *
+ * Enter:   parent node
+ *          child node
+ *
+ * The children list is constructed backwards. This is fixed later with
+ * a call to reversechildren.
+ *
+ * If child is an attrlist, its children are added to parent and the
+ * attrlist is freed.
+ */
+void
+addnode(struct node *parent, struct node *child)
+{
+    if (!child)
+        return;
+    if (child-&gt;type == NODE_ATTRLIST) {
+        /* Add the attrs in the attrlist to parent. */
+        struct node *child2;
+        reversechildren(child);
+        child2 = child-&gt;children;
+        memfree(child);
+        while (child2) {
+            struct node *next = child2-&gt;next;
+            addnode(parent, child2);
+            child2 = next;
+        }
+    } else {
+        child-&gt;next = parent-&gt;children;
+        parent-&gt;children = child;
+        child-&gt;parent = parent;
+    }
+}
+
+/***********************************************************************
+ * reversechildren : recursively reverse child lists
+ *
+ * Also sets parent field on each node.
+ */
+void
+reversechildren(struct node *node)
+{
+    struct node *newlist = 0;
+    struct node *child = node-&gt;children;
+    while (child) {
+        struct node *next = child-&gt;next;
+        child-&gt;parent = node;
+        child-&gt;next = newlist;
+        newlist = child;
+        reversechildren(child);
+        child = next;
+    }
+    node-&gt;children = newlist;
+}
+
+/***********************************************************************
+ * nodeisempty : test if node is empty (has no children)
+ */
+int
+nodeisempty(struct node *node)
+{
+    return !node-&gt;children;
+}
+
+/***********************************************************************
+ * nodewalk : single step of depth last traversal of node tree
+ *
+ * Return:  next node in walk, 0 if finished
+ */
+struct node *
+nodewalk(struct node *node)
+{
+    if (node-&gt;children)
+        return node-&gt;children;
+    if (node-&gt;next)
+        return node-&gt;next;
+    do {
+        node = node-&gt;parent;
+        if (!node)
+            return 0;
+    } while (!node-&gt;next);
+    return node-&gt;next;
+}
+
+/***********************************************************************
+ * findchildelement : find child element of a particular name
+ *
+ * Enter:   node = element
+ *          name = name to find
+ *
+ * Return:  0 else child element of that name
+ */
+static struct node *
+findchildelement(struct node *node, const char *name)
+{
+    node = node-&gt;children;
+    while (node) {
+        if (node-&gt;type == NODE_ELEMENT) {
+            struct element *element = (void *)node;
+            if (!strcmp(element-&gt;name, name))
+                break;
+        }
+        node = node-&gt;next;
+    }
+    return node;
+}
+
+/***********************************************************************
+ * getattr : get value of attribute
+ *
+ * Enter:   node = element to find attribute in
+ *          name = name of attribute
+ *
+ * Return:  0 if not found, else 0-terminated string value
+ */
+const char *
+getattr(struct node *node, const char *name)
+{
+    node = node-&gt;children;
+    while (node) {
+        if (node-&gt;type == NODE_ATTR) {
+            struct attr *attr = (void *)node;
+            if (!strcmp(attr-&gt;name, name))
+                return attr-&gt;value;
+        }
+        node = node-&gt;next;
+    }
+    return 0;
+}
+
+/***********************************************************************
+ * findchildelementwithnameattr : find child element with a name attribute
+ *                                of a particular value
+ *
+ * Enter:   node = element
+ *          name = name to find
+ *
+ * Return:  0 else child element with name attr of that value
+ */
+static struct node *
+findchildelementwithnameattr(struct node *node, const char *name)
+{
+    node = node-&gt;children;
+    while (node) {
+        if (node-&gt;type == NODE_ELEMENT) {
+            const char *s = getattr(node, &quot;name&quot;);
+            if (s &amp;&amp; !strcmp(s, name))
+                break;
+        }
+        node = node-&gt;next;
+    }
+    return node;
+}
+
+/***********************************************************************
+ * findreturntype : find Type parse node for return type
+ *
+ * Enter:   node = Operation element
+ *
+ * Return:  0 if not found, else Type parse node for return type
+ */
+struct node *
+findreturntype(struct node *node)
+{
+    return findchildelement(node, &quot;Type&quot;);
+}
+
+/***********************************************************************
+ * findparamidentifier : find identifier parse node for parameter
+ *
+ * Enter:   node = Operation element
+ *          name = parameter name to find
+ *
+ * Return:  0 if not found, else node struct for parameter identifier
+ */
+struct node *
+findparamidentifier(struct node *node, const char *name)
+{
+    node = findchildelement(node, &quot;ArgumentList&quot;);
+    if (node)
+        node = findchildelementwithnameattr(node, name);
+    return node;
+}
+
+/***********************************************************************
+ * findthrowidentifier : find identifier parse node for exception name
+ *
+ * Enter:   node = Operation element
+ *          name = exception name to find
+ *
+ * Return:  0 if not found, else node for Name element, child of Raises
+ *              or SetRaises
+ */
+struct node *
+findthrowidentifier(struct node *node, const char *name)
+{
+    struct node *node2 = findchildelement(node, &quot;Raises&quot;);
+    if (node2)
+        node2 = findchildelementwithnameattr(node2, name);
+    if (!node2) {
+        node2 = findchildelement(node, &quot;SetRaises&quot;);
+        if (node2)
+            node2 = findchildelementwithnameattr(node2, name);
+    }
+    return node2;
+}
+
+/***********************************************************************
+ * outputid : output the id of a node
+ */
+static void
+outputid(struct node *node)
+{
+    if (node-&gt;parent)
+        outputid(node-&gt;parent);
+    if (node-&gt;id) {
+        fputs(&quot;::&quot;, stdout);
+        printtext(node-&gt;id, strlen(node-&gt;id), 1);
+    }
+}
+
+/***********************************************************************
+ * outputnode : output node and its children
+ *
+ * Enter:   node = node to output, assumed to be an element
+ *          indent
+ */
+void
+outputnode(struct node *node, unsigned int indent)
+{
+    struct element *element = (void *)node;
+    struct node *child;
+    int empty = 1;
+    printf(&quot;%*s&lt;%s&quot;, indent, &quot;&quot;, element-&gt;name);
+    child = element-&gt;n.children;
+    while (child) {
+        switch(child-&gt;type) {
+        case NODE_ELEMENT:
+            empty = 0;
+            break;
+        case NODE_ATTR:
+            {
+                struct attr *attr = (void *)child;
+                printf(&quot; %s=\&quot;&quot;, attr-&gt;name);
+                printtext(attr-&gt;value, strlen(attr-&gt;value), 1);
+                printf(&quot;\&quot;&quot;);
+            }
+            break;
+        }
+        child = child-&gt;next;
+    }
+    if (node-&gt;id) {
+        printf(&quot; id=\&quot;&quot;);
+        outputid(node);
+        printf(&quot;\&quot;&quot;);
+    }
+    if (!empty || node-&gt;comments || node-&gt;wsstart) {
+        printf(&quot;&gt;\n&quot;);
+        if (node-&gt;wsstart) {
+            printf(&quot;%*s  &lt;webidl&gt;&quot;, indent, &quot;&quot;);
+            outputwidl(node);
+            printf(&quot;&lt;/webidl&gt;\n&quot;);
+        }
+        outputdescriptive(node, indent + 2);
+        child = element-&gt;n.children;
+        while (child) {
+            switch(child-&gt;type) {
+            case NODE_ELEMENT:
+                outputnode(child, indent + 2);
+                break;
+            }
+            child = child-&gt;next;
+        }
+        printf(&quot;%*s&lt;/%s&gt;\n&quot;, indent, &quot;&quot;, element-&gt;name);
+    } else
+        printf(&quot;/&gt;\n&quot;);
+}
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcnodeh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef node_h
+#define node_h
+
+/* struct node : a node in the parse tree (excluding comments) */
+enum { NODE_ELEMENT, NODE_ATTR, NODE_ATTRLIST };
+struct node {
+    int type;
+    struct node *next;
+    struct node *parent;
+    struct node *children;
+    struct comment *comments; /* list of comments attached to this node */
+    /* If wsstart and end are set, they give the literal Web IDL that can
+     * be output in a &lt;webidl&gt; element. */
+    const char *wsstart;
+    /* If start and end are set, they give the text of a scoped name that
+     * can be enclosed in a &lt;ref&gt; when outputting a &lt;webidl&gt; element for
+     * an ancestor element. */
+    const char *start;
+    const char *end;
+    const char *id;
+};
+
+struct element {
+    struct node n;
+    const char *name;
+};
+
+struct attr {
+    struct node n;
+    const char *name;
+    const char *value;
+};
+
+struct attrlist {
+    struct node n;
+};
+
+struct node *newelement(const char *name);
+struct node *newattr(const char *name, const char *val);
+struct node *newattrlist(void);
+void addnode(struct node *parent, struct node *child);
+void reversechildren(struct node *node);
+int nodeisempty(struct node *node);
+const char *getattr(struct node *node, const char *name);
+struct node *nodewalk(struct node *node);
+struct node *findreturntype(struct node *node);
+struct node *findparamidentifier(struct node *node, const char *name);
+struct node *findthrowidentifier(struct node *node, const char *name);
+void outputnode(struct node *node, unsigned int indent);
+
+#endif /* ndef node_h */
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcosh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/os.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/os.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/os.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef os_h
+#define os_h
+
+/* Linux configuration */
+#if defined(__gnu_linux__)
+
+
+/* Windows configuration */
+#elif defined(_MSC_VER)
+
+#define inline __inline
+#define strncasecmp strnicmp
+#define snprintf _snprintf
+#define va_copy(a,b) ((a)=(b))
+
+#endif
+
+#endif /* ndef os_h */
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcparsec"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,1414 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Hand-crafted recursive descent parser for Web IDL grammar.
+ ***********************************************************************/
+#include &lt;assert.h&gt;
+#include &lt;stdarg.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+
+#include &quot;comment.h&quot;
+#include &quot;lex.h&quot;
+#include &quot;misc.h&quot;
+#include &quot;node.h&quot;
+#include &quot;parse.h&quot;
+
+/***********************************************************************
+ * tokerrorexit : error and exit with line number from token
+ */
+static void
+tokerrorexit(struct tok *tok, const char *format, ...)
+{
+    va_list ap;
+    char *m;
+    va_start(ap, format);
+    m = vmemprintf(format, ap);
+    if (tok-&gt;type == TOK_EOF)
+        locerrorexit(tok-&gt;filename, tok-&gt;linenum, &quot;at end of input: %s&quot;, m);
+    else
+        locerrorexit(tok-&gt;filename, tok-&gt;linenum, &quot;at '%.*s': %s&quot;, tok-&gt;len, tok-&gt;start, m);
+    va_end(ap);
+}
+
+/***********************************************************************
+ * lexnocomment : lex next token, discarding or storing comments
+ *
+ * A block comment starting with |** or |*! is a doxygen comment.
+ * If it starts with |**&lt; or |*!&lt; then it refers to the previous
+ * identifier, not the next one. (I am using | to represent / otherwise
+ * this comment would be illegal.)
+ *
+ * An inline comment starting with /// or //! is a doxygen comment.
+ * If it starts with ///&lt; or //!&lt; then it refers to the previous
+ * identifier, not the next one.
+ */
+static struct tok *
+lexnocomment(void)
+{
+    struct tok *tok;
+    for (;;) {
+        tok = lex();
+        if (tok-&gt;type != TOK_BLOCKCOMMENT &amp;&amp; tok-&gt;type != TOK_INLINECOMMENT)
+            break;
+        addcomment(tok);
+    }
+    return tok;
+}
+
+/***********************************************************************
+ * eat : check token then read the following one
+ *
+ * Enter:   tok struct
+ *          type = type of token expected, error given if no match
+ *
+ * On return, tok is updated to the following token.
+ */
+static void
+eat(struct tok *tok, int type)
+{
+    if (tok-&gt;type != type) {
+        const char *p;
+        if (type &lt; TOK_DOMString)
+            tokerrorexit(tok, &quot;expected '%c'&quot;, type);
+        p = keywords;
+        while (type != TOK_DOMString) {
+            p += strlen(p) + 1;
+            type--;
+        }
+        tokerrorexit(tok, &quot;expected '%s'&quot;, p);
+    }
+    lexnocomment();
+}
+
+/***********************************************************************
+ * setid : flag that an id attribute is required on node
+ *
+ * Enter:   node
+ *
+ * node-&gt;id is set to the value of the name attribute. This makes
+ * outputnode give it an id attribute whose value is the id attribute
+ * of the parent if any, then &quot;::&quot;, then node-&gt;id.
+ */
+static void
+setid(struct node *node)
+{
+    node-&gt;id = getattr(node, &quot;name&quot;);
+}
+
+/***********************************************************************
+ * setidentifier : allocate 0-terminated string for identifier token
+ *
+ * Enter:   tok = token, error given if not identifier
+ *
+ * Return:  allocated 0-terminated string
+ */
+static char *
+setidentifier(struct tok *tok)
+{
+    char *s;
+    if (tok-&gt;type != TOK_IDENTIFIER)
+        tokerrorexit(tok, &quot;expected identifier&quot;);
+    s = memprintf(&quot;%.*s&quot;, tok-&gt;len, tok-&gt;start);
+    return s;
+}
+
+/***********************************************************************
+ * setargumentname : allocate 0-terminated string for identifier token
+ *
+ * Enter:   tok = token, error given if not identifier
+ *
+ * Return:  allocated 0-terminated string
+ */
+static char *
+setargumentname(struct tok *tok)
+{
+    char *s;
+    if (tok-&gt;type != TOK_IDENTIFIER &amp;&amp; tok-&gt;type &lt; TOK_attribute)
+        tokerrorexit(tok, &quot;expected argument name&quot;);
+    s = memprintf(&quot;%.*s&quot;, tok-&gt;len, tok-&gt;start);
+    return s;
+}
+
+
+/* Prototypes for funcs that have a forward reference. */
+static struct node *parsetype(struct tok *tok);
+static struct node *parsedefaultvalue(struct tok *tok, struct node *parent);
+static struct node *parseuniontype(struct tok *tok);
+static struct node *parseargumentlist(struct tok *tok);
+static void parsedefinitions(struct tok *tok, struct node *parent);
+static struct node *parsetypesuffixstartingwitharray(struct tok *tok, struct node *node);
+
+/***********************************************************************
+ * parsescopedname : parse [53] ScopedName
+ *
+ * Enter:   tok = next token
+ *          name = name of attribute to put scoped name in
+ *          ref = whether to enable enclosing of the name in &lt;ref&gt; in
+ *                outputwidl
+ *
+ * Return:  node struct for new attribute
+ *          tok updated
+ */
+static struct node *
+parsescopedname(struct tok *tok, const char *name, int ref)
+{
+    const char *start = tok-&gt;start, *end;
+    struct node *node;
+    unsigned int len = 0;
+    char *s = memalloc(3);
+    if (tok-&gt;type != TOK_IDENTIFIER)
+        tokerrorexit(tok, &quot;expected identifier&quot;);
+    s = memrealloc(s, len + tok-&gt;len + 1);
+    memcpy(s + len, tok-&gt;start, tok-&gt;len);
+    len += tok-&gt;len;
+    end = tok-&gt;start + tok-&gt;len;
+    lexnocomment();
+    s[len] = 0;
+    node = newattr(name, s);
+    if (ref) {
+        node-&gt;start = start;
+        node-&gt;end = end;
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parsescopednamelist : parse [51] ScopedNameList
+ *
+ * Enter:   tok = next token
+ *          name = name of element for scoped name list
+ *          name2 = name of element for entry in list
+ *          comment = whether to attach documentation to each name
+ *
+ * Return:  node for list of scoped names
+ *          tok updated
+ */
+static struct node *
+parsescopednamelist(struct tok *tok, const char *name, const char *name2,
+        int comment)
+{
+    struct node *node = newelement(name);
+    for (;;) {
+        struct node *attr = parsescopedname(tok, &quot;name&quot;, 1);
+        struct node *n = newelement(name2);
+        if (comment)
+            setcommentnode(n);
+        addnode(n, attr);
+        addnode(node, n);
+        if (tok-&gt;type != ',')
+            break;
+        lexnocomment();
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parsereturntype : parse [50] ReturnType
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parsereturntype(struct tok *tok)
+{
+    if (tok-&gt;type == TOK_void) {
+        struct node *node = newelement(&quot;Type&quot;);
+        addnode(node, newattr(&quot;type&quot;, &quot;void&quot;));
+        lexnocomment();
+        return node;
+    }
+    return parsetype(tok);
+}
+
+/***********************************************************************
+ * parseunsignedintegertype : parse [46] UnsignedIntegerType
+ *
+ * Enter:   tok = next token (one of &quot;unsigned&quot;, &quot;short&quot; or &quot;long&quot;)
+ *
+ * Return:  0-terminated canonical string for the type
+ *          tok updated to just past UnsignedIntegerType
+ */
+static const char *
+parseunsignedintegertype(struct tok *tok)
+{
+    static const char *names[] = {
+        &quot;short&quot;, &quot;long&quot;, &quot;long long&quot;, 0,
+        &quot;unsigned short&quot;, &quot;unsigned long&quot;, &quot;unsigned long long&quot; };
+    enum { TYPE_SHORT, TYPE_LONG, TYPE_LONGLONG,
+           TYPE_UNSIGNED = 4 };
+    int type = 0;
+    if (tok-&gt;type == TOK_unsigned) {
+        type = TYPE_UNSIGNED;
+        lexnocomment();
+    }
+    if (tok-&gt;type == TOK_short) {
+        type |= TYPE_SHORT;
+        lexnocomment();
+    } else if (tok-&gt;type != TOK_long)
+        tokerrorexit(tok, &quot;expected 'short' or 'long' after 'unsigned'&quot;);
+    else {
+        type |= TYPE_LONG;
+        lexnocomment();
+        if (tok-&gt;type == TOK_long) {
+            type += TYPE_LONGLONG - TYPE_LONG;
+            lexnocomment();
+        }
+    }
+    return names[type];
+}
+/***********************************************************************
+ * parsetypesuffix : parse [44] TypeSuffix
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parsetypesuffix(struct tok *tok, struct node *node)
+{
+    if (tok-&gt;type == TOK_DOUBLEBRACKET) {
+        struct node *typenode = node;
+        node = newelement(&quot;Type&quot;);
+        addnode(node, newattr(&quot;type&quot;, &quot;array&quot;));
+        addnode(node, typenode);
+        lexnocomment();
+        node = parsetypesuffix(tok, node);
+    } else if (tok-&gt;type == '?') {
+        addnode(node, newattr(&quot;nullable&quot;, &quot;nullable&quot;));
+        lexnocomment();
+        node = parsetypesuffixstartingwitharray(tok, node);
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parsetypesuffixstartingwitharray : parse [44] TypeSuffixStartingWithArray
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parsetypesuffixstartingwitharray(struct tok *tok,  struct node *node)
+{
+    if (tok-&gt;type == TOK_DOUBLEBRACKET) {
+        struct node *typenode = node;
+        node = newelement(&quot;Type&quot;);
+        addnode(node, newattr(&quot;type&quot;, &quot;array&quot;));
+        addnode(node, typenode);
+        lexnocomment();
+        node = parsetypesuffix(tok, node);
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parseprimitiveorstringtype : parse [45] PrimitiveOrString
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parseprimitiveorstringtype(struct tok *tok)
+{
+  struct node *node;
+    switch (tok-&gt;type) {
+    case TOK_unsigned:
+    case TOK_short:
+    case TOK_long:
+        node = newelement(&quot;Type&quot;);
+        addnode(node, newattr(&quot;type&quot;, parseunsignedintegertype(tok)));
+        break;
+    default:
+        node = newelement(&quot;Type&quot;);
+        switch (tok-&gt;type) {
+        default:
+            tokerrorexit(tok, &quot;expected type&quot;);
+            break;
+        case TOK_unrestricted:
+          lexnocomment();
+          if (tok-&gt;type == TOK_float) {
+            addnode(node, newattr(&quot;type&quot;, &quot;unrestricted float&quot;));
+          } else if (tok-&gt;type == TOK_double) {
+            addnode(node, newattr(&quot;type&quot;, &quot;unrestricted double&quot;));
+          } else {
+            tokerrorexit(tok, &quot;expected float or double after unrestricted&quot;);
+          }
+          break;
+        case TOK_boolean:
+            addnode(node, newattr(&quot;type&quot;, &quot;boolean&quot;));
+            break;
+        case TOK_byte:
+            addnode(node, newattr(&quot;type&quot;, &quot;byte&quot;));
+            break;
+        case TOK_octet:
+            addnode(node, newattr(&quot;type&quot;, &quot;octet&quot;));
+            break;
+        case TOK_float:
+            addnode(node, newattr(&quot;type&quot;, &quot;float&quot;));
+            break;
+        case TOK_double:
+            addnode(node, newattr(&quot;type&quot;, &quot;double&quot;));
+            break;
+        case TOK_DOMString:
+            addnode(node, newattr(&quot;type&quot;, &quot;DOMString&quot;));
+            break;
+        case TOK_ByteString:
+            addnode(node, newattr(&quot;type&quot;, &quot;ByteString&quot;));
+            break;
+        case TOK_Date:
+            addnode(node, newattr(&quot;type&quot;, &quot;Date&quot;));
+            break;
+        case TOK_RegExp:
+            addnode(node, newattr(&quot;type&quot;, &quot;RegExp&quot;));
+            break;
+
+        }
+        lexnocomment();
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parsenonanytype : parse NonAnyType
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parsenonanytype(struct tok *tok)
+{
+    struct node *node;
+    switch (tok-&gt;type) {
+    case TOK_IDENTIFIER:
+        node = newelement(&quot;Type&quot;);
+        addnode(node, parsescopedname(tok, &quot;name&quot;, 1));
+        node = parsetypesuffix(tok, node);
+        break;
+    case TOK_sequence:
+        node = newelement(&quot;Type&quot;);
+        addnode(node, newattr(&quot;type&quot;, &quot;sequence&quot;));
+        lexnocomment();
+        eat(tok, '&lt;');
+        addnode(node, parsetype(tok));
+        eat(tok, '&gt;');
+        if (tok-&gt;type == '?') {
+          addnode(node, newattr(&quot;nullable&quot;, &quot;nullable&quot;));
+          lexnocomment();
+        }
+        break;
+    case TOK_object:
+        node = newelement(&quot;Type&quot;);
+        addnode(node, newattr(&quot;type&quot;, &quot;object&quot;));
+        lexnocomment();
+        node = parsetypesuffix(tok, node);
+        break;
+    default:
+        node = parseprimitiveorstringtype(tok);
+        node = parsetypesuffix(tok, node);
+        break;
+    }       
+    return node;
+}
+
+/***********************************************************************
+ * parseunionmembertype: parse UnionMemberType
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parseunionmembertype(struct tok *tok)
+{
+  struct node *node;
+  if (tok-&gt;type == TOK_any) {
+    struct node *typenode = newelement(&quot;Type&quot;);
+    addnode(typenode, newattr(&quot;type&quot;, &quot;any&quot;));
+    lexnocomment();
+    eat(tok, TOK_DOUBLEBRACKET);
+    node = newelement(&quot;Type&quot;);
+    addnode(node, newattr(&quot;type&quot;, &quot;array&quot;));
+    addnode(node, typenode);
+    lexnocomment();
+    node = parsetypesuffix(tok, node);
+  } else if (tok-&gt;type == '(') { 
+    node = parseuniontype(tok);
+  } else {
+    node = parsenonanytype(tok);
+  }
+  return node;
+}
+
+
+/***********************************************************************
+ * parseuniontype : parse UnionType
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parseuniontype(struct tok *tok)
+{
+  struct node *node;
+  eat(tok, '(');
+  node = newelement(&quot;Type&quot;);
+  addnode(node, newattr(&quot;type&quot;, &quot;union&quot;));
+  if (tok-&gt;type != ')') {
+    for (;;) {
+      addnode(node, parseunionmembertype(tok));
+      if (tok-&gt;type != TOK_or)
+        break;
+      lexnocomment();
+    }
+  }
+  eat(tok, ')');
+  node = parsetypesuffix(tok, node);      
+  return node;
+}
+
+/***********************************************************************
+ * parsetype : parse [44] Type
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for type
+ *          tok updated
+ */
+static struct node *
+parsetype(struct tok *tok)
+{
+    struct node *node;
+    if (tok-&gt;type == '(') {
+      node = parseuniontype(tok);
+    } else if (tok-&gt;type == TOK_any) {
+      node = newelement(&quot;Type&quot;);
+      addnode(node, newattr(&quot;type&quot;, &quot;any&quot;));
+      lexnocomment();
+      node = parsetypesuffixstartingwitharray(tok, node);
+    } else {
+      node = parsenonanytype(tok);        
+    }
+    return node;
+}
+
+
+/***********************************************************************
+ * parseextendedattribute : parse [39] ExtendedAttribute
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  node for extended attribute
+ *
+ * This parses the various forms of extended attribute, as in
+ * rules [57] [58] [59] [60] [61].
+ *
+ * This does not spot the error that you cannot have a ScopedName
+ * and an ArgumentList.
+ */
+static struct node *
+parseextendedattribute(struct tok *tok)
+{
+        const char *start ;
+    struct node *node = newelement(&quot;ExtendedAttribute&quot;);
+    char *attrname = setidentifier(tok);
+    addnode(node, newattr(&quot;name&quot;, attrname));
+    start = tok-&gt;prestart;
+    node-&gt;wsstart = start;
+    node-&gt;end = tok-&gt;start + tok-&gt;len;
+    if(!strcmp(attrname, &quot;Constructor&quot;) || !strcmp(attrname, &quot;NamedConstructor&quot;)) {
+            setcommentnode(node);
+        }
+    lexnocomment();
+    if (tok-&gt;type == '=') {
+        lexnocomment();
+        addnode(node, parsescopedname(tok, &quot;value&quot;, 0));
+    }
+    if (tok-&gt;type == '(') {
+        lexnocomment();
+        addnode(node, parseargumentlist(tok));
+            node-&gt;end = tok-&gt;start + tok-&gt;len;
+        eat(tok, ')');
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parseextendedattributelist : parse [37] ExtendedAttributeList
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  0 else node for extended attribute list
+ *          tok updated if anything parsed
+ */
+static struct node *
+parseextendedattributelist(struct tok *tok)
+{
+    struct node *node;
+    if (tok-&gt;type != '[')
+        return 0;
+    node = newelement(&quot;ExtendedAttributeList&quot;);
+    for (;;) {
+        lexnocomment();
+        addnode(node, parseextendedattribute(tok));
+        if (tok-&gt;type != ',')
+            break;
+    }
+    if (tok-&gt;type != ']')
+        tokerrorexit(tok, &quot;expected ',' or ']'&quot;);
+    lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parseexceptionfield : parse [36] ExceptionField
+ *
+ * Enter:   tok = next token
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the exceptionfield
+ *          tok updated
+ */
+static struct node *
+parseexceptionfield(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;ExceptionField&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    addnode(node, parsetype(tok));
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parseargument : parse [31] Argument
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  new node
+ *
+ * tok updated on return
+ */
+static struct node *
+parseargument(struct tok *tok)
+{
+    struct node *node = newelement(&quot;Argument&quot;);
+    struct node *eal = parseextendedattributelist(tok);
+    setcommentnode(node);
+    if (eal) addnode(node, eal);
+    if (tok-&gt;type == TOK_optional) {
+        addnode(node, newattr(&quot;optional&quot;, &quot;optional&quot;));
+        lexnocomment();
+    }
+    addnode(node, parsetype(tok));
+    if (tok-&gt;type == TOK_ELLIPSIS) {
+        addnode(node, newattr(&quot;ellipsis&quot;, &quot;ellipsis&quot;));
+        lexnocomment();
+    }
+    addnode(node, newattr(&quot;name&quot;, setargumentname(tok)));
+    lexnocomment();
+    // Optional default value
+    if (tok-&gt;type == '=') {
+      tok = lexnocomment();
+      node = parsedefaultvalue(tok, node);
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parseargumentlist : parse [29] ArgumentList
+ *
+ * Enter:   tok = next token
+ *
+ * Return:  new node for the arglist
+ *          tok updated
+ */
+static struct node *
+parseargumentlist(struct tok *tok)
+{
+    struct node *node = newelement(&quot;ArgumentList&quot;);
+    /* We rely on the fact that ArgumentList is always followed by ')'. */
+    if (tok-&gt;type != ')') {
+        for (;;) {
+            addnode(node, parseargument(tok));
+            if (tok-&gt;type != ',')
+                break;
+            lexnocomment();
+        }
+    }
+    return node;
+}
+
+
+/***********************************************************************
+ * parseoperationrest : parse [25] OperationRest
+ *
+ * Enter:   tok = next token
+ *          node
+ *
+ * Return:  node
+ *          tok on terminating ';'
+ */
+static struct node *
+parseoperationrest(struct tok *tok, struct node *node)
+{
+    if (tok-&gt;type == TOK_IDENTIFIER) {
+        addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+        lexnocomment();
+    }
+    eat(tok, '(');
+    addnode(node, parseargumentlist(tok));
+    eat(tok, ')');
+    return node;
+}
+
+/***********************************************************************
+ * parsereturntypeandoperationrest: parse ReturnType OperationRest
+ * Enter:   tok = next token
+ *          eal
+ *          attrs list of attributes
+ * Return:  node
+ *          tok on terminating ';'
+ */
+static struct node *
+parsereturntypeandoperationrest(struct tok *tok, struct node *eal, struct node *attrs) 
+{
+  struct node *node =  newelement(&quot;Operation&quot;);
+  struct node *nodeType = parsereturntype(tok);
+  if (eal) addnode(node, eal);
+  setcommentnode(node);
+  addnode(node, attrs);
+  addnode(node, nodeType);
+  return parseoperationrest(tok, node);
+}
+
+/***********************************************************************
+ * parseiteratorrest : parse OptionalIteratorInterface
+ *
+ * Enter:   tok = next token
+ *          node
+ *
+ * Return:  node
+ *          tok on terminating ';'
+ */
+static struct node *
+parseoptionaliteratorinterface(struct tok *tok, struct node *node)
+{
+  if (tok-&gt;type == '=') {
+    lexnocomment();
+    addnode(node, newattr(&quot;interface&quot;, setidentifier(tok)));
+    lexnocomment();
+  }
+  return node;
+}
+
+/***********************************************************************
+ * parseoperationoriteratorrest : parse [25] OperationOrIteratorRest
+ *
+ * Enter:   tok = next token
+ *          eal = 0 else extended attribute list node
+ *          attrs = list-of-attrs node containing attrs to add to new node
+ *
+ * Return:  new node
+ *          tok on terminating ';'
+ */
+static struct node *
+parseoperationoriteratorrest(struct tok *tok, struct node *eal, struct node *attrs)
+{
+  struct node *node;
+  struct node *nodeType = parsereturntype(tok);
+  unsigned int isIterator = 0;
+  if (tok-&gt;type == TOK_iterator) {
+    lexnocomment();
+    if (tok-&gt;type == TOK_object) {
+      lexnocomment();
+      node = newelement(&quot;IteratorObject&quot;);
+      addnode(node, nodeType);
+      return node;
+    } else {
+      node = newelement(&quot;Iterator&quot;);
+      isIterator = 1;    
+    }
+  } else {
+    node = newelement(&quot;Operation&quot;);
+  }
+  if (eal) addnode(node, eal);
+  setcommentnode(node);
+  addnode(node, attrs);
+  addnode(node, nodeType);
+  if (isIterator)
+    return parseoptionaliteratorinterface(tok, node);
+  else
+    return parseoperationrest(tok, node);
+}
+
+
+/***********************************************************************
+ * parseattribute : parse [17] Attribute
+ *
+ * Enter:   tok = next token (&quot;readonly&quot; or &quot;attribute&quot;)
+ *          eal = 0 else extended attribute list node
+ *          attrs = list-of-attrs node containing attrs to add to new node
+ *
+ * Return:  node
+ *          tok on terminating ';'
+ */
+static struct node *
+parseattribute(struct tok *tok, struct node *eal, struct node *attrs)
+{
+    struct node *node = newelement(&quot;Attribute&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    addnode(node, attrs);
+    if (tok-&gt;type == TOK_inherit) {
+        lexnocomment();
+        addnode(node, newattr(&quot;inherit&quot;, &quot;inherit&quot;));
+    }
+    if (tok-&gt;type == TOK_readonly) {
+        lexnocomment();
+        addnode(node, newattr(&quot;readonly&quot;, &quot;readonly&quot;));
+    }
+    eat(tok, TOK_attribute);
+    addnode(node, parsetype(tok));
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parseserializer : parse Serializer
+ *
+ * Enter:   tok = next token
+ *          eal
+ *
+ * Return:  node updated with value
+ *          tok updated
+ */
+static struct node *
+parseserializer (struct tok *tok, struct node *eal) {
+        struct node *nodeAttribute;
+        struct node *node = newelement(&quot;Serializer&quot;);
+  if (tok-&gt;type == '=') {
+    if (eal) addnode(node, eal);
+    lexnocomment();
+    if (tok-&gt;type == TOK_IDENTIFIER) {
+      addnode(node, newattr(&quot;attribute&quot;, setidentifier(tok)));
+      lexnocomment();
+    } else if (tok-&gt;type == '{') {
+      unsigned int done = 0;
+      struct node *nodeMap = newelement(&quot;Map&quot;);
+      lexnocomment();
+      if (tok-&gt;type == TOK_getter) {
+        addnode(nodeMap, newattr(&quot;pattern&quot;, &quot;getter&quot;));
+        done = 1;
+      } else if (tok-&gt;type == TOK_attribute) {
+        addnode(nodeMap, newattr(&quot;pattern&quot;, &quot;all&quot;));
+        done = 1;
+      } else if (tok-&gt;type == TOK_inherit) {
+        addnode(nodeMap, newattr(&quot;inherit&quot;, &quot;inherit&quot;));
+        lexnocomment();
+        eat(tok, ',');
+        if (tok-&gt;type == TOK_attribute) {
+          addnode(nodeMap, newattr(&quot;pattern&quot;, &quot;all&quot;));
+          done = 1;
+        }
+      } else if (tok-&gt;type != TOK_IDENTIFIER) {
+        tokerrorexit(tok, &quot;expected 'attribute', 'getter', 'inherit' or attribute identifiers in serializer map&quot;);
+      }
+      if (done) {
+        lexnocomment();
+        eat(tok, '}');
+      } else {
+        addnode(nodeMap, newattr(&quot;pattern&quot;, &quot;selection&quot;));
+        do {
+          if (tok-&gt;type != TOK_IDENTIFIER)
+            tokerrorexit(tok, &quot;expected attribute identifiers in serializer map %s&quot;, tok-&gt;prestart);
+          nodeAttribute = newelement(&quot;PatternAttribute&quot;);
+          addnode(nodeAttribute, newattr(&quot;name&quot;, setidentifier(tok)));
+          addnode(nodeMap, nodeAttribute);
+          lexnocomment();
+          if (tok-&gt;type == ',')
+            lexnocomment();
+        } while (tok-&gt;type != '}');
+        eat(tok, '}');
+      }
+      addnode(node, nodeMap);
+    } else if (tok-&gt;type == '[') {
+      struct node *nodeList = newelement(&quot;List&quot;);
+      lexnocomment();
+      if (tok-&gt;type == TOK_getter) {
+        addnode(nodeList, newattr(&quot;pattern&quot;, &quot;getter&quot;));
+        lexnocomment();
+        eat(tok, ']');
+      } else {
+        addnode(nodeList, newattr(&quot;pattern&quot;, &quot;selection&quot;));
+        do {
+          if (tok-&gt;type != TOK_IDENTIFIER)
+            tokerrorexit(tok, &quot;expected attribute identifiers in serializer list&quot;);
+          nodeAttribute = newelement(&quot;PatternAttribute&quot;);
+          addnode(nodeAttribute, newattr(&quot;name&quot;, setidentifier(tok)));
+          addnode(nodeList, nodeAttribute);
+          lexnocomment();
+          if (tok-&gt;type == ',')
+            lexnocomment();
+        } while (tok-&gt;type != ']');            
+        eat(tok, ']');
+      }
+      addnode(node, nodeList);
+    } else {
+      tokerrorexit(tok, &quot;Expected '{', '[' or an attribute identifier in the serializer declaration&quot;);
+    }
+    return node;
+  } else {
+    if (eal) addnode(node, eal);
+    return node;
+  }
+}
+
+/***********************************************************************
+ * parseattributeoroperationoriterator : parse [15] AttributeOrOperationOrIterator
+ *
+ * Enter:   tok = next token
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node
+ *          tok on terminating ';'
+ */
+static struct node *
+parseattributeoroperationoriterator(struct tok *tok, struct node *eal)
+{
+        int alreadyseen ;
+    struct node *attrs = newattrlist();
+    if (tok-&gt;type == TOK_serializer) {
+      lexnocomment();
+      if (tok-&gt;type == '=' || tok-&gt;type ==';') {
+        return parseserializer(tok, eal);
+      } else {
+        addnode(attrs, newattr(&quot;serializer&quot;, &quot;serializer&quot;));
+        return parsereturntypeandoperationrest(tok, eal, attrs);
+      }
+    }
+    if (tok-&gt;type == TOK_stringifier) {
+        addnode(attrs, newattr(&quot;stringifier&quot;, &quot;stringifier&quot;));
+        lexnocomment();
+        if (tok-&gt;type == ';') {
+            struct node *node = newelement(&quot;Stringifier&quot;);
+            if (eal) addnode(node, eal);
+            return node;
+        }
+    }
+    if (tok-&gt;type == TOK_static) {
+        lexnocomment();
+        addnode(attrs, newattr(&quot;static&quot;, &quot;static&quot;));
+    }
+    if (tok-&gt;type == TOK_inherit || tok-&gt;type == TOK_readonly || tok-&gt;type == TOK_attribute)
+        return parseattribute(tok, eal, attrs);
+    if (!nodeisempty(attrs))
+         return parsereturntypeandoperationrest(tok, eal, attrs);
+    alreadyseen = 0;
+    for (;;) {
+      static const int t[] = { TOK_getter,
+                               TOK_setter, TOK_creator, TOK_deleter, TOK_legacycaller,
+                               0 };
+      const int *tt = t;
+      char *s;
+      while (*tt &amp;&amp; *tt != tok-&gt;type)
+        tt++;
+      if (!*tt)
+        break;
+      s = memprintf(&quot;%.*s&quot;, tok-&gt;len, tok-&gt;start);
+      if (alreadyseen &amp; (1 &lt;&lt; (tt - t)))
+        tokerrorexit(tok, &quot;'%s' qualifier cannot be repeated&quot;, s);
+      alreadyseen |= 1 &lt;&lt; (tt - t);
+      addnode(attrs, newattr(s, s));
+      lexnocomment();
+    }
+    if (!nodeisempty(attrs))    
+      return parsereturntypeandoperationrest(tok, eal, attrs);
+    else
+      return parseoperationoriteratorrest(tok, eal, attrs);
+}
+
+
+/***********************************************************************
+ * parseconstexpr : parse ConstValue
+ *
+ * Enter:   tok = next token
+ *          node
+ *
+ * Return:  node updated with value
+ *          tok updated
+ */
+static struct node *
+parseconstexpr (struct tok *tok, struct node *node) {
+  char *s;
+  switch(tok-&gt;type) {
+  case TOK_true:
+  case TOK_false:
+  case TOK_minusinfinity:
+  case TOK_INTEGER:
+  case TOK_FLOAT:
+  case TOK_null:
+  case TOK_infinity:
+  case TOK_NaN:
+    break;
+  default:
+    tokerrorexit(tok, &quot;expected constant value&quot;);
+    break;
+  }
+  s = memalloc(tok-&gt;len + 1);
+  memcpy(s, tok-&gt;start, tok-&gt;len);
+  s[tok-&gt;len] = 0;
+  if (tok-&gt;type != TOK_STRING) {
+    addnode(node, newattr(&quot;value&quot;, s));
+  } else {
+    addnode(node, newattr(&quot;stringvalue&quot;, s));
+  }
+  lexnocomment();
+  return node;
+}
+
+/***********************************************************************
+ * parsedefaultvalue : parse DefaultValue
+ *
+ * Enter:   tok = next token
+ *          node
+ *
+ * Return:  node updated with value
+ *          tok updated
+ */
+static struct node *
+parsedefaultvalue (struct tok *tok, struct node *node) {
+  char *s;
+  if (tok-&gt;type == TOK_STRING) {
+    s = memalloc(tok-&gt;len + 1);
+    memcpy(s, tok-&gt;start, tok-&gt;len);
+    s[tok-&gt;len] = 0;
+    addnode(node, newattr(&quot;stringvalue&quot;, s));
+    lexnocomment();
+    return node;
+  } else {
+    return parseconstexpr(tok, node);
+  }
+}
+
+
+
+/***********************************************************************
+ * parsedictionarymember : parse DictionaryMember
+ *
+ * Enter:   tok = next token
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node
+ *          tok on terminating ';'
+ */
+static struct node *
+parsedictionarymember(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;DictionaryMember&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    addnode(node, parsetype(tok));
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    // Optional value
+    if (tok-&gt;type == '=') {
+      tok = lexnocomment();
+      node = parsedefaultvalue(tok, node);
+    }
+    return node;
+}
+
+/***********************************************************************
+ * parseconst : parse [12] Const
+ *
+ * Enter:   tok = next token, known to be TOK_const
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the const
+ *          tok on terminating ';'
+ */
+static struct node *
+parseconst(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;Const&quot;);
+    setcommentnode(node);
+    if (eal) addnode(node, eal);
+    tok = lexnocomment();
+    switch(tok-&gt;type) {
+    case TOK_boolean:
+    case TOK_byte:
+    case TOK_octet:
+    case TOK_float:
+    case TOK_double:
+    case TOK_unsigned:
+    case TOK_unrestricted:
+    case TOK_short:
+    case TOK_long:
+        addnode(node, parsetype(tok));
+        break;
+    default:
+        tokerrorexit(tok, &quot;expected acceptable constant type&quot;);
+        break;
+    }
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    eat(tok, '=');
+    node = parseconstexpr(tok, node);
+    return node;
+}
+
+/***********************************************************************
+ * parseimplementsstatement : parse [11] ImplementsStatement
+ *
+ * Enter:   tok = next token, known to be :: or TOK_IDENTIFIER
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the typedef
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parseimplementsstatement(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;Implements&quot;);
+    setcommentnode(node);
+    if (eal) addnode(node, eal);
+    addnode(node, parsescopedname(tok, &quot;name1&quot;, 1));
+    eat(tok, TOK_implements);
+    addnode(node, parsescopedname(tok, &quot;name2&quot;, 1));
+    return node;
+}
+
+/***********************************************************************
+ * parsetypedef : parse [10] Typedef
+ *
+ * Enter:   tok = next token, known to be TOK_typedef
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the typedef
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parsetypedef(struct tok *tok, struct node *eal)
+{
+struct node *ealtype;
+struct node *typenode;
+    struct node *node = newelement(&quot;Typedef&quot;);
+    setcommentnode(node);
+    if (eal) addnode(node, eal);
+    tok = lexnocomment();
+    ealtype = parseextendedattributelist(tok);
+    typenode = parsetype(tok);
+    if (ealtype) addnode(typenode, ealtype);
+    addnode(node, typenode);
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parseexception : parse [8] Exception
+ *
+ * Enter:   tok = next token, known to be TOK_exception
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the exception
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parseexception(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;Exception&quot;);
+    setcommentnode(node);
+    if (eal) addnode(node, eal);
+    tok = lexnocomment();
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    lexnocomment();
+    if (tok-&gt;type == ':') {
+        lexnocomment();
+        addnode(node, parsescopednamelist(tok, &quot;ExceptionInheritance&quot;, &quot;Name&quot;, 1));
+    }
+    eat(tok, '{');
+    while (tok-&gt;type != '}') {
+        const char *start = tok-&gt;prestart;
+        struct node *node2;
+        struct node *eal = parseextendedattributelist(tok);
+        if (tok-&gt;type == TOK_const)
+            node2 = parseconst(tok, eal);
+        else
+            node2 = parseexceptionfield(tok, eal);
+        addnode(node, node2);
+        node2-&gt;wsstart = start;
+        node2-&gt;end = tok-&gt;start + tok-&gt;len;
+        setid(node2);
+        eat(tok, ';');
+    }
+    lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parseinterface : parse [4] Interface
+ *
+ * Enter:   tok = next token, known to be TOK_interface
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the interface
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parseinterface(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;Interface&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    tok = lexnocomment();
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    if (tok-&gt;type == ':') {
+        lexnocomment();
+        addnode(node, parsescopednamelist(tok, &quot;InterfaceInheritance&quot;, &quot;Name&quot;, 1));
+    }
+    eat(tok, '{');
+    while (tok-&gt;type != '}') {
+        const char *start = tok-&gt;prestart;
+        struct node *eal = parseextendedattributelist(tok);
+        struct node *node2;
+        if (tok-&gt;type == TOK_const)
+            addnode(node, node2 = parseconst(tok, eal));
+        else
+            addnode(node, node2 = parseattributeoroperationoriterator(tok, eal));
+        node2-&gt;wsstart = start;
+        node2-&gt;end = tok-&gt;start + tok-&gt;len;
+        setid(node2);
+        eat(tok, ';');
+    }
+    lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parsecallback : parse Callback
+ *
+ * Enter:   tok = next token, known to be TOK_dictionary
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the enum
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parsecallback(struct tok *tok, struct node *eal)
+{
+  struct node *node;
+  if (tok-&gt;type == TOK_interface) {
+    node = parseinterface(tok, eal);
+    addnode(node, newattr(&quot;callback&quot;, &quot;callback&quot;));    
+  } else {
+    node = newelement(&quot;Callback&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    eat(tok, '=');
+    addnode(node, parsereturntype(tok));
+    eat(tok, '(');
+    addnode(node, parseargumentlist(tok));
+    eat(tok, ')');
+  }
+  return node;
+}
+
+/***********************************************************************
+ * parsedictionary : parse Dictionary
+ *
+ * Enter:   tok = next token, known to be TOK_dictionary
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the dictionary
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parsedictionary(struct tok *tok, struct node *eal)
+{
+    struct node *node = newelement(&quot;Dictionary&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    tok = lexnocomment();
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    if (tok-&gt;type == ':') {
+        lexnocomment();
+        addnode(node, parsescopednamelist(tok, &quot;DictionaryInheritance&quot;, &quot;Name&quot;, 1));
+    }
+    eat(tok, '{');
+    while (tok-&gt;type != '}') {
+        const char *start = tok-&gt;prestart;
+        struct node *eal = parseextendedattributelist(tok);
+        struct node *node2;
+        if (tok-&gt;type == TOK_const)
+            addnode(node, node2 = parseconst(tok, eal));
+        else
+            addnode(node, node2 = parsedictionarymember(tok, eal));
+        node2-&gt;wsstart = start;
+        node2-&gt;end = tok-&gt;start + tok-&gt;len;
+        setid(node2);
+        eat(tok, ';');
+    }
+    lexnocomment();
+    return node;
+}
+
+/***********************************************************************
+ * parseenum : parse Enum
+ *
+ * Enter:   tok = next token, known to be TOK_dictionary
+ *          eal = 0 else extended attribute list node
+ *
+ * Return:  new node for the enum
+ *          tok updated to the terminating ';'
+ */
+static struct node *
+parseenum(struct tok *tok, struct node *eal)
+{
+        char *s;
+    struct node *node = newelement(&quot;Enum&quot;);
+    if (eal) addnode(node, eal);
+    setcommentnode(node);
+    tok = lexnocomment();
+    addnode(node, newattr(&quot;name&quot;, setidentifier(tok)));
+    tok = lexnocomment();
+    eat(tok, '{');
+    while (tok-&gt;type != '}') {
+      if (tok-&gt;type == TOK_STRING) {
+        const char *start = tok-&gt;prestart;
+        struct node *node2 = newelement(&quot;EnumValue&quot;);
+        setcommentnode(node2);
+        
+        s = memalloc(tok-&gt;len + 1);
+        memcpy(s, tok-&gt;start, tok-&gt;len);
+        s[tok-&gt;len] = 0;
+        addnode(node2, newattr(&quot;stringvalue&quot;, s));
+        node2-&gt;wsstart = start;
+        node2-&gt;end = tok-&gt;start + tok-&gt;len;
+        setid(node2);
+        addnode(node, node2);
+      } else {
+        tokerrorexit(tok, &quot;expected string in enum&quot;);
+      }
+      lexnocomment();
+      if (tok-&gt;type == ',') {
+        lexnocomment();
+      }
+    }
+    eat(tok, '}');
+    return node;
+}
+
+/***********************************************************************
+ * parsedefinitions : parse [1] Definitions
+ *
+ * Enter:   tok = next token
+ *          parent = parent node to add definitions to
+ *
+ * On return, tok has been updated.
+ */
+static void
+parsedefinitions(struct tok *tok, struct node *parent)
+{
+    parent-&gt;wsstart = tok-&gt;prestart;
+    for (;;) {
+        const char *wsstart = tok-&gt;prestart;
+        struct node *eal = parseextendedattributelist(tok);
+        struct node *node;
+        switch (tok-&gt;type) {
+        case TOK_partial:
+            eat(tok, TOK_partial);
+            if (tok-&gt;type == TOK_dictionary) {
+              node = parsedictionary(tok, eal);
+            } else {
+              node = parseinterface(tok, eal);
+            }
+            addnode(node, newattr(&quot;partial&quot;, &quot;partial&quot;));
+            break;
+        case TOK_interface:
+              node = parseinterface(tok, eal);
+            break;
+        case TOK_callback:
+            eat(tok, TOK_callback);
+            node = parsecallback(tok, eal);
+            break;
+        case TOK_dictionary:
+            node = parsedictionary(tok, eal);
+            break;          
+        case TOK_enum:
+            node = parseenum(tok, eal);
+            break;          
+        case TOK_exception:
+            node = parseexception(tok, eal);
+            break;
+        case TOK_typedef:
+            node = parsetypedef(tok, eal);
+            break;
+        case TOK_IDENTIFIER:
+            node = parseimplementsstatement(tok, eal);
+            break;
+        default:
+            if (eal)
+                tokerrorexit(tok, &quot;expected definition after extended attribute list&quot;);
+            node = 0;
+            break;
+        }
+        if (!node)
+            break;
+        node-&gt;wsstart = wsstart;
+        node-&gt;end = tok-&gt;start + tok-&gt;len;
+        eat(tok, ';');
+        addnode(parent, node);
+        setid(node);
+        parent-&gt;end = node-&gt;end;
+    }
+}
+
+/***********************************************************************
+ * parse
+ *
+ * Return:  root element containing (possibly empty) list of definitions
+ */
+struct node *
+parse(void)
+{
+        struct tok *tok; 
+    struct node *root = newelement(&quot;Definitions&quot;);
+    setcommentnode(root);
+    tok = lexnocomment();
+    parsedefinitions(tok, root);
+    if (tok-&gt;type != TOK_EOF)
+        tokerrorexit(tok, &quot;expected end of input&quot;);
+    reversechildren(root);
+    return root;
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcparseh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef parse_h
+#define parse_h
+
+struct node *parse(void);
+
+#endif /* ndef parse_h */
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcprocessc"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.c (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.c                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.c        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,319 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#include &lt;assert.h&gt;
+#include &lt;stdio.h&gt;
+#include &lt;string.h&gt;
+#include &quot;comment.h&quot;
+#include &quot;lex.h&quot;
+#include &quot;misc.h&quot;
+#include &quot;node.h&quot;
+#include &quot;os.h&quot;
+#include &quot;parse.h&quot;
+#include &quot;process.h&quot;
+
+#if 0
+static const char ntnames[] = { NTNAMES };
+#endif /*0*/
+
+/***********************************************************************
+ * printtext : print text with xml entity escapes
+ *
+ * Enter:   s = text
+ *          len = number of bytes
+ *          escamp = whether to escape &amp;
+ *
+ * This also escapes double quote mark so it can be used for an
+ * attribute value. It also turns a tab into spaces.
+ */
+void
+printtext(const char *s, unsigned int len, int escamp)
+{
+    const char *p = s, *end = s + len;
+    unsigned int count = 0;
+    while (p != end) {
+        int ch = *p;
+        char buf[9];
+        const char *seq = 0;
+        count++;
+        switch (ch) {
+        case '&lt;':
+            seq = &quot;&amp;lt;&quot;;
+            break;
+        case '&amp;':
+            seq = escamp ? &quot;&amp;amp;&quot; : &quot;&amp;&quot;;
+            break;
+        case '&quot;':
+            seq = &quot;&amp;quot;&quot;;
+            break;
+        case '\n':
+            p++;
+            count = 0;
+            continue;
+        case '\t':
+            seq = &quot;        &quot; + ((count - 1) &amp; 7);
+            count = 0;
+            break;
+        default:
+            if ((unsigned char)ch &gt;= 0x20) {
+                p++;
+                continue;
+            }
+            snprintf(buf, 9, &quot;&amp;#%i;&quot;, ch);
+            seq = buf;
+            break;
+        }
+        if (p - s != fwrite(s, 1, p - s, stdout))
+            errorexit(&quot;write error&quot;);
+        fputs(seq, stdout);
+        s = ++p;
+    }
+    if (p - s != fwrite(s, 1, p - s, stdout))
+        errorexit(&quot;write error&quot;);
+}
+
+#if 0
+/***********************************************************************
+ * outputnodeastext : output parse node and descendants as deparsed text
+ *
+ * Enter:   node = parse node
+ *          needspace = true if last output char was an identifier char
+ *
+ * Return:  updated needspace value
+ */
+static int
+outputnodeastext(struct node *node, int needspace)
+{
+    if (node-&gt;type &gt;= NT_START) {
+        struct node *child = node-&gt;children;
+        while (child) {
+            needspace = outputnodeastext(child, needspace);
+            child = child-&gt;next;
+        }
+    } else {
+        unsigned int len = strlen(node-&gt;name);
+        if (len) {
+            int ch = node-&gt;name[0];
+            if (ch == '_' || ((unsigned)(ch - '0') &lt; 10
+                    || (unsigned)((ch &amp; ~0x20) - 'A') &lt; 26))
+            {
+                if (needspace) putchar(' ');
+            }
+            ch = node-&gt;name[len - 1];
+            if (ch == '_' || ((unsigned)(ch - '0') &lt; 10
+                    || (unsigned)((ch &amp; ~0x20) - 'A') &lt; 26))
+            {
+                needspace = 1;
+            }
+            printtext(node-&gt;name, len, 1);
+        }
+    }
+    return needspace;
+}
+
+/***********************************************************************
+ * printfqid : print fully-qualified id
+ *
+ * Enter:   node struct
+ *
+ * Return:  whether anything printed
+ */
+static int
+printfqid(struct node *node)
+{
+    int any = 0;
+    struct node *identifier;
+    if (node-&gt;parent) {
+        any = printfqid(node-&gt;parent);
+    }
+    switch (node-&gt;type) {
+    case NT_Module:
+    case NT_Interface:
+    case NT_Typedef:
+    case NT_Operation:
+    case NT_Attribute:
+    case NT_Const:
+        if (any)
+            printf(&quot;:&quot;);
+        /* Find identifier child if any. */
+        identifier = node-&gt;children;
+        while (identifier) {
+            if (identifier-&gt;type == TOK_IDENTIFIER)
+                break;
+            if (identifier-&gt;type == NT_TypedefRest) {
+                identifier = identifier-&gt;children;
+                continue;
+            }
+            identifier = identifier-&gt;next;
+        }
+        if (identifier) {
+            printtext(identifier-&gt;name, strlen(identifier-&gt;name), 1);
+            any = 1;
+        }
+        break;
+    }
+    return any;
+}
+
+/***********************************************************************
+ * output : output subtree of parse tree
+ *
+ * Enter:   node = root of subtree
+ *          extendedattributelist = 0 else extended attribute list node
+ *                                  applying to node
+ *          indent = indent (nesting) level
+ */
+static void outputchildren(struct node *node, struct node *identifier, unsigned int indent);
+
+static void
+output(struct node *node, struct node *extendedattributelist,
+       unsigned int indent)
+{
+    if (extendedattributelist) {
+        node-&gt;wsstart = extendedattributelist-&gt;wsstart;
+        node-&gt;start = extendedattributelist-&gt;start;
+    }
+    if (node-&gt;type == NT_ExtendedAttribute) {
+        printf(&quot;%*s&lt;ExtendedAttribute value=\&quot;&quot;, indent, &quot;&quot;);
+        outputnodeastext(node, 0);
+        printf(&quot;\&quot;/&gt;\n&quot;);
+    } else if (node-&gt;type == NT_BooleanLiteral) {
+        printf(&quot;%*s&lt;BooleanLiteral value=\&quot;%s\&quot;/&gt;&quot;, indent, &quot;&quot;,
+            node-&gt;children-&gt;name);
+    } else if (node-&gt;type == NT_ReadOnly) {
+        printf(&quot;%*s&lt;ReadOnly/&gt;\n&quot;, indent, &quot;&quot;);
+    } else if (node-&gt;type &gt;= NT_START) {
+        const char *ntname;
+        /* Find identifier child if any. */
+        struct node *identifier = node-&gt;children;
+        while (identifier) {
+            if (identifier-&gt;type == TOK_IDENTIFIER)
+                break;
+            identifier = identifier-&gt;next;
+        }
+        /* Find nonterminal name. */
+        ntname = ntnames + 2;
+        while (node-&gt;type - NT_START != ((unsigned char)ntname[-2] | (unsigned char)ntname[-1] &lt;&lt; 8))
+            ntname += strlen(ntname) + 3;
+        /* Output start of element. */
+        printf(&quot;%*s&lt;%s&quot;, indent, &quot;&quot;, ntname);
+        /* Output identifier if any as attribute. */
+        if (identifier) {
+            printf(&quot; identifier=\&quot;&quot;);
+            printtext(identifier-&gt;name, strlen(identifier-&gt;name), 1);
+            printf(&quot;\&quot;&quot;);
+        }
+        switch (node-&gt;type) {
+        case NT_Module:
+        case NT_Interface:
+        case NT_Typedef:
+        case NT_Const:
+            /* Output fully qualified id. */
+            printf(&quot; fqid=\&quot;&quot;);
+            printfqid(node);
+            printf(&quot;\&quot;&quot;);
+            break;
+        }
+        if (!identifier &amp;&amp; !extendedattributelist &amp;&amp; !node-&gt;children &amp;&amp; !node-&gt;comments)
+            printf(&quot;/&gt;\n&quot;);
+        else {
+            printf(&quot;&gt;\n&quot;);
+            /* Output descriptive elements (doxygen comments) for node. */
+            outputdescriptive(node, indent + 2);
+            /* Output descriptive elements (doxygen comments) for identifier. */
+            if (identifier)
+                outputdescriptive(identifier, indent + 2);
+            /* Output extended attribute list. */
+            if (extendedattributelist)
+                output(extendedattributelist, 0, indent + 2);
+            /* Output children (excluding identifier child). */
+            outputchildren(node, identifier, indent + 2);
+            printf(&quot;%*s&lt;/%s&gt;\n&quot;, indent, &quot;&quot;, ntname);
+        }
+    } else switch (node-&gt;type) {
+    case TOK_DOMString:
+    case TOK_any:
+    case TOK_boolean:
+    case TOK_octet:
+    case TOK_float:
+    case TOK_double:
+    case TOK_Object:
+    case TOK_unsigned:
+    case TOK_short:
+    case TOK_long:
+    case TOK_void:
+        printf(&quot;%*s&lt;%s/&gt;\n&quot;, indent, &quot;&quot;, node-&gt;name);
+        break;
+    case TOK_INTEGER:
+        printf(&quot;%*s&lt;integer value=\&quot;&quot;, indent, &quot;&quot;);
+        printtext(node-&gt;name, strlen(node-&gt;name), 1);
+        printf(&quot;\&quot;/&gt;\n&quot;);
+        break;
+    case TOK_FLOAT:
+        printf(&quot;%*s&lt;Float value=\&quot;&quot;, indent, &quot;&quot;);
+        printtext(node-&gt;name, strlen(node-&gt;name), 1);
+        printf(&quot;\&quot;/&gt;\n&quot;);
+        break;
+    case TOK_STRING:
+        printf(&quot;%*s&lt;string value=\&quot;&quot;, indent, &quot;&quot;);
+        printtext(node-&gt;name, strlen(node-&gt;name), 1);
+        printf(&quot;\&quot;/&gt;\n&quot;);
+        break;
+    }
+}
+
+/***********************************************************************
+ * outputchildren : call output for each child of node
+ *
+ * Enter:   node
+ *          identifier = child node to omit from output
+ *          indent = indent (nesting) level
+ */
+static void
+outputchildren(struct node *node, struct node *identifier, unsigned int indent)
+{
+    struct node *extendedattributelist;
+    struct node *child;
+    child = node-&gt;children;
+    extendedattributelist = 0;
+    while (child) {
+        if (child-&gt;type == NT_ExtendedAttributeList &amp;&amp; node-&gt;type != NT_Argument)
+            extendedattributelist = child;
+        else {
+            if (identifier != child)
+                output(child, extendedattributelist, indent);
+            extendedattributelist = 0;
+        }
+        child = child-&gt;next;
+    }
+}
+#endif /*0*/
+
+/***********************************************************************
+ * processfiles : process input files
+ *
+ * Enter:   name = filename
+ */
+void
+processfiles(const char *const *names, int dtdref)
+{
+    struct node *root;
+    readinput(names);
+    root = parse();
+    processcomments(root);
+    printf(&quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;\n&quot;);
+    if(dtdref)
+        printf(&quot;&lt;!DOCTYPE Definitions SYSTEM \&quot;widlprocxml.dtd\&quot;&gt;\n&quot;);
+    outputnode(root, 0);
+}
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcprocessh"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.h (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.h                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.h        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+/***********************************************************************
+ * $Id$
+ * Copyright 2009 Aplix Corporation. All rights reserved.
+ * Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ***********************************************************************/
+#ifndef process_h
+#define process_h
+
+#if 0
+#define NT_START 0x100
+#include &quot;nonterminals.h&quot;
+#endif/*0*/
+
+void printtext(const char *s, unsigned int len, int escamp);
+
+void processfiles(const char *const *names, int dtdref);
+
+#endif /* ndef process_h */
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</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/resources/webidl2/test/widlproc/src/comment.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/comment.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/entities.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/lex.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/main.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/misc.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/node.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/os.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/parse.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.c
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/process.h
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcwidlprocxmltohtmlxsl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,828 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!-- ====================================================================
+$Id: widlprocxmltohtml.xsl 407 2009-10-26 13:48:48Z tpr $
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+XSLT stylesheet to convert widlprocxml into html documentation.
+===================================================================== --&gt;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&gt;
+&lt;xsl:output method=&quot;html&quot; encoding=&quot;utf-8&quot; indent=&quot;yes&quot; doctype-public=&quot;html&quot;/&gt;
+
+&lt;xsl:param name=&quot;date&quot; select=&quot;'error: missing date'&quot;/&gt;
+
+&lt;xsl:variable name=&quot;title&quot; select=&quot;concat('The ',/Definitions/descriptive/name,' Module - Version ',/Definitions/descriptive/version)&quot;/&gt;
+
+&lt;!-- Root of document. --&gt;
+&lt;xsl:template match=&quot;/&quot;&gt;
+    &lt;html&gt;
+        &lt;head&gt;
+            &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;widlhtml.css&quot; media=&quot;screen&quot;/&gt;
+            &lt;title&gt;
+                &lt;xsl:value-of select=&quot;$title&quot;/&gt;
+            &lt;/title&gt;
+        &lt;/head&gt;
+        &lt;body&gt;
+            &lt;xsl:apply-templates/&gt;
+        &lt;/body&gt;
+    &lt;/html&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Root of Definitions. --&gt;
+&lt;xsl:template match=&quot;Definitions&quot;&gt;
+    &lt;div class=&quot;api&quot; id=&quot;{@id}&quot;&gt;
+        &lt;a href=&quot;http://bondi.omtp.org&quot;&gt;&lt;img src=&quot;http://www.omtp.org/images/BondiSmall.jpg&quot; alt=&quot;Bondi logo&quot;/&gt;&lt;/a&gt;
+        &lt;h1&gt;&lt;xsl:value-of select=&quot;$title&quot;/&gt;&lt;/h1&gt;
+        &lt;h3&gt;12 May 2009&lt;/h3&gt;
+
+        &lt;h2&gt;Authors&lt;/h2&gt;
+        &lt;ul class=&quot;authors&quot;&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive/author&quot;/&gt;
+        &lt;/ul&gt;
+
+        &lt;p class=&quot;copyright&quot;&gt;&lt;small&gt;© The authors, 2012. All rights reserved.&lt;/small&gt;&lt;/p&gt;
+
+        &lt;hr/&gt;
+
+        &lt;h2&gt;Abstract&lt;/h2&gt;
+
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/description&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+
+        &lt;h2&gt;Table of Contents&lt;/h2&gt;
+        &lt;ul class=&quot;toc&quot;&gt;
+          &lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;Introduction&lt;/a&gt;
+          &lt;ul&gt;
+            &lt;xsl:if test=&quot;descriptive/def-api-feature-set&quot;&gt;
+              &lt;li&gt;&lt;a href=&quot;#def-api-feature-sets&quot;&gt;Feature set&lt;/a&gt;&lt;/li&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;descriptive/def-api-feature&quot;&gt;
+              &lt;li&gt;&lt;a href=&quot;#def-api-features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;descriptive/def-device-cap&quot;&gt;
+              &lt;li&gt;&lt;a href=&quot;#def-device-caps&quot;&gt;Device Capabilities&lt;/a&gt;&lt;/li&gt;
+            &lt;/xsl:if&gt;
+          &lt;/ul&gt;
+          &lt;/li&gt;
+          &lt;xsl:if test=&quot;Typedef&quot;&gt;
+            &lt;li&gt;&lt;a href=&quot;#typedefs&quot;&gt;Type Definitions&lt;/a&gt;
+            &lt;ul class=&quot;toc&quot;&gt;
+              &lt;xsl:for-each select=&quot;Typedef[descriptive]&quot;&gt;
+                &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+              &lt;/xsl:for-each&gt;
+            &lt;/ul&gt;
+            &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Interface&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#interfaces&quot;&gt;Interfaces&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Interface[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Dictionary&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#dictionaries&quot;&gt;Dictionary types&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Dictionary[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Callback&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#callbacks&quot;&gt;Callbacks&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Callback[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Enum&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#enums&quot;&gt;Enums&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Enum[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+        &lt;/ul&gt;
+
+        &lt;hr/&gt;
+
+        &lt;h2&gt;Summary of Methods&lt;/h2&gt;
+        &lt;xsl:call-template name=&quot;summary&quot;/&gt;
+        
+        &lt;h2 id=&quot;intro&quot;&gt;Introduction&lt;/h2&gt;
+
+        &lt;xsl:apply-templates select=&quot;descriptive/description&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+
+        &lt;xsl:if test=&quot;descriptive/def-api-feature-set&quot;&gt;
+            &lt;div id=&quot;def-api-feature-sets&quot; class=&quot;def-api-feature-sets&quot;&gt;
+                &lt;h3 id=&quot;features&quot;&gt;Feature set&lt;/h3&gt;
+                &lt;p&gt;This is the URI used to declare this API's feature set, for use in bondi.requestFeature. For the URL, the list of features included by the feature set is provided.&lt;/p&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/def-api-feature-set&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;descriptive/def-api-feature&quot;&gt;
+            &lt;div id=&quot;def-api-features&quot; class=&quot;def-api-features&quot;&gt;
+                &lt;h3 id=&quot;features&quot;&gt;Features&lt;/h3&gt;
+                &lt;p&gt;This is the list of URIs used to declare this API's features, for use in bondi.requestFeature. For each URL, the list of functions covered is provided.&lt;/p&gt;
+                &lt;xsl:apply-templates select=&quot;Interface/descriptive/def-instantiated&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/def-api-feature&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;descriptive/def-device-cap&quot;&gt;
+            &lt;div class=&quot;def-device-caps&quot; id=&quot;def-device-caps&quot;&gt;
+                &lt;h3&gt;Device capabilities&lt;/h3&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;descriptive/def-device-cap&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Typedef&quot;&gt;
+            &lt;div class=&quot;typedefs&quot; id=&quot;typedefs&quot;&gt;
+                &lt;h2&gt;Type Definitions&lt;/h2&gt;
+                &lt;xsl:apply-templates select=&quot;Typedef[descriptive]&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Interface&quot;&gt;
+            &lt;div class=&quot;interfaces&quot; id=&quot;interfaces&quot;&gt;
+                        &lt;h2&gt;Interfaces&lt;/h2&gt;
+                           &lt;xsl:apply-templates select=&quot;Interface&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Dictionary&quot;&gt;
+            &lt;div class=&quot;dictionaries&quot; id=&quot;dictionaries&quot;&gt;
+                        &lt;h2&gt;Dictionary types&lt;/h2&gt;
+                        &lt;xsl:apply-templates select=&quot;Dictionary&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Callback&quot;&gt;
+            &lt;div class=&quot;callbacks&quot; id=&quot;callbacks&quot;&gt;
+                        &lt;h2&gt;Callbacks&lt;/h2&gt;
+                        &lt;xsl:apply-templates select=&quot;Callback&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Enum&quot;&gt;
+            &lt;div class=&quot;enums&quot; id=&quot;enums&quot;&gt;
+                        &lt;h2&gt;Enums&lt;/h2&gt;
+                        &lt;xsl:apply-templates select=&quot;Enum&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- def-api-feature-set --&gt;
+&lt;xsl:template match=&quot;def-api-feature-set&quot;&gt;
+      &lt;dl class=&quot;def-api-feature-set&quot;&gt;
+          &lt;dt&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/dt&gt;
+          &lt;dd&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+            &lt;xsl:if test=&quot;descriptive/api-feature&quot;&gt;
+              &lt;div class=&quot;api-features&quot;&gt;
+                &lt;p&gt;
+                  Includes API features:
+                &lt;/p&gt;
+                &lt;ul&gt;
+                  &lt;xsl:for-each select=&quot;descriptive/api-feature&quot;&gt;
+                    &lt;li&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                &lt;/ul&gt;
+              &lt;/div&gt;
+            &lt;/xsl:if&gt;
+          &lt;/dd&gt;
+      &lt;/dl&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- def-api-feature --&gt;
+&lt;xsl:template match=&quot;def-api-feature&quot;&gt;
+      &lt;dl class=&quot;def-api-feature&quot;&gt;
+          &lt;dt&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/dt&gt;
+          &lt;dd&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+            &lt;xsl:if test=&quot;descriptive/device-cap&quot;&gt;
+              &lt;div class=&quot;device-caps&quot;&gt;
+                &lt;p&gt;
+                  Device capabilities:
+                &lt;/p&gt;
+                &lt;ul&gt;
+                  &lt;xsl:for-each select=&quot;descriptive/device-cap&quot;&gt;
+                    &lt;li&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                &lt;/ul&gt;
+              &lt;/div&gt;
+            &lt;/xsl:if&gt;
+          &lt;/dd&gt;
+      &lt;/dl&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- def-device-cap --&gt;
+&lt;xsl:template match=&quot;def-device-cap&quot;&gt;
+    &lt;dt class=&quot;def-device-cap&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;&lt;/dt&gt;
+    &lt;dd&gt;
+      &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+      &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+      &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+      &lt;xsl:if test=&quot;descriptive/param&quot;&gt;
+        &lt;div class=&quot;device-caps&quot;&gt;
+          &lt;p&gt;Security parameters:&lt;/p&gt;
+          &lt;ul&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/param&quot;/&gt;
+          &lt;/ul&gt;
+        &lt;/div&gt;
+      &lt;/xsl:if&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Exception: not implemented --&gt;
+&lt;!-- Valuetype: not implemented --&gt;
+&lt;xsl:template match=&quot;Exception|Valuetype|Const&quot;&gt;
+    &lt;xsl:if test=&quot;descriptive&quot;&gt;
+        &lt;xsl:message terminate=&quot;yes&quot;&gt;element &lt;xsl:value-of select=&quot;name()&quot;/&gt; not supported&lt;/xsl:message&gt;
+    &lt;/xsl:if&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Typedef. --&gt;
+&lt;xsl:template match=&quot;Typedef[descriptive]&quot;&gt;
+    &lt;div class=&quot;typedef&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;2.&lt;xsl:number value=&quot;position()&quot;/&gt;. &lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Interface. --&gt;
+&lt;xsl:template match=&quot;Interface[descriptive]&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;interface&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;../Implements[@name2=$name]/webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;InterfaceInheritance&quot;/&gt;
+        &lt;xsl:if test=&quot;Const/descriptive&quot;&gt;
+            &lt;div class=&quot;consts&quot;&gt;
+                &lt;h4&gt;Constants&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Const&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;ExtendedAttributeList/ExtendedAttribute/descriptive&quot;&gt;
+            &lt;div class=&quot;constructors&quot;&gt;
+                &lt;h4&gt;Constructors&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;ExtendedAttributeList/ExtendedAttribute&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Attribute/descriptive&quot;&gt;
+            &lt;div class=&quot;attributes&quot;&gt;
+                &lt;h4&gt;Attributes&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Attribute&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Operation/descriptive&quot;&gt;
+            &lt;div class=&quot;methods&quot;&gt;
+                &lt;h4&gt;Methods&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Operation&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+&lt;xsl:template match=&quot;Interface[not(descriptive)]&quot;&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Dictionary. --&gt;
+&lt;xsl:template match=&quot;Dictionary[descriptive]&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;dictionary&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;InterfaceInheritance&quot;/&gt;
+        &lt;xsl:if test=&quot;Const/descriptive&quot;&gt;
+            &lt;div class=&quot;consts&quot;&gt;
+                &lt;h4&gt;Constants&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Const&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Attribute/descriptive&quot;&gt;
+            &lt;div class=&quot;attributes&quot;&gt;
+                &lt;h4&gt;Attributes&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Attribute&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+&lt;xsl:template match=&quot;Dictionary[not(descriptive)]&quot;&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=&quot;InterfaceInheritance/ScopedNameList&quot;&gt;
+              &lt;p&gt;
+                &lt;xsl:text&gt;This interface inherits from: &lt;/xsl:text&gt;
+                &lt;xsl:for-each select=&quot;Name&quot;&gt;
+                  &lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;
+                  &lt;xsl:if test=&quot;position!=last()&quot;&gt;, &lt;/xsl:if&gt;
+                &lt;/xsl:for-each&gt;
+              &lt;/p&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Attribute --&gt;
+&lt;xsl:template match=&quot;Attribute&quot;&gt;
+    &lt;dt class=&quot;attribute&quot; id=&quot;{@name}&quot;&gt;
+        &lt;code&gt;
+            &lt;xsl:if test=&quot;@stringifier&quot;&gt;
+                stringifier
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@readonly&quot;&gt;
+                readonly
+            &lt;/xsl:if&gt;
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+        &lt;/code&gt;&lt;/dt&gt;
+        &lt;dd&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;GetRaises&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;SetRaises&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Const --&gt;
+&lt;xsl:template match=&quot;Const&quot;&gt;
+  &lt;dt class=&quot;const&quot; id=&quot;{@id}&quot;&gt;
+    &lt;code&gt;
+      &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+      &lt;xsl:text&gt; &lt;/xsl:text&gt;
+      &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+    &lt;/code&gt;
+  &lt;/dt&gt;
+  &lt;dd&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+  &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- ExtendedAttribute name==Constructor || name==NamedConstructor --&gt;
+&lt;xsl:template match=&quot;ExtendedAttributeList/ExtendedAttribute&quot;&gt;
+    &lt;dt class=&quot;constructor&quot; id=&quot;{concat(@name,generate-id(.))}&quot;&gt;
+        &lt;code&gt;
+            &lt;xsl:value-of select=&quot;../../@name&quot;/&gt;
+             &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+            &lt;xsl:apply-templates select=&quot;ArgumentList&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;1&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+            &lt;xsl:text&gt;);&lt;/xsl:text&gt;
+        &lt;/code&gt;
+    &lt;/dt&gt;
+    &lt;dd&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;ArgumentList&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;Raises&quot;/&gt;
+        &lt;xsl:if test=&quot;descriptive/api-feature&quot;&gt;
+            &lt;div class=&quot;api-features&quot;&gt;
+                &lt;h6&gt;API features&lt;/h6&gt;
+                &lt;dl&gt;
+                    &lt;xsl:apply-templates select=&quot;descriptive/api-feature&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Operation --&gt;
+&lt;xsl:template match=&quot;Operation&quot;&gt;
+    &lt;dt class=&quot;method&quot; id=&quot;{concat(@name,generate-id(.))}&quot;&gt;
+        &lt;code&gt;
+            &lt;xsl:if test=&quot;@stringifier&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@stringifier, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@omittable&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@omittable, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@getter&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@getter, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@setter&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@setter, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@creator&quot;&gt;
+                    &lt;xsl:value-of select=&quot;concat(@creator, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@deleter&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@deleter, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@caller&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@caller, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+            &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+            &lt;xsl:apply-templates select=&quot;ArgumentList&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;1&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+            &lt;xsl:text&gt;);&lt;/xsl:text&gt;
+        &lt;/code&gt;
+    &lt;/dt&gt;
+    &lt;dd&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;ArgumentList&quot;/&gt;
+        &lt;xsl:if test=&quot;Type/descriptive&quot;&gt;
+          &lt;div class=&quot;returntype&quot;&gt;
+            &lt;h5&gt;Return value&lt;/h5&gt;
+            &lt;xsl:apply-templates select=&quot;Type/descriptive&quot;/&gt;
+          &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:apply-templates select=&quot;Raises&quot;/&gt;
+        &lt;xsl:if test=&quot;descriptive/api-feature&quot;&gt;
+            &lt;div class=&quot;api-features&quot;&gt;
+                &lt;h6&gt;API features&lt;/h6&gt;
+                &lt;dl&gt;
+                    &lt;xsl:apply-templates select=&quot;descriptive/api-feature&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Callback --&gt;
+&lt;xsl:template match=&quot;Callback&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;callback&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+
+            &lt;dd&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+                &lt;div class=&quot;synopsis&quot;&gt;
+                    &lt;h6&gt;Signature&lt;/h6&gt;
+                    &lt;pre&gt;
+                        &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+                        &lt;xsl:text&gt; &lt;/xsl:text&gt;
+                        &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+                        &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+                        &lt;xsl:apply-templates select=&quot;ArgumentList&quot;&gt;
+                            &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;1&quot;/&gt;
+                        &lt;/xsl:apply-templates&gt;
+                        &lt;xsl:text&gt;);
+&lt;/xsl:text&gt;&lt;/pre&gt;
+                &lt;/div&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;ArgumentList&quot;/&gt;
+                &lt;xsl:if test=&quot;Type/descriptive&quot;&gt;
+                  &lt;div class=&quot;returntype&quot;&gt;
+                    &lt;h5&gt;Return value&lt;/h5&gt;
+                    &lt;xsl:apply-templates select=&quot;Type/descriptive&quot;/&gt;
+                  &lt;/div&gt;
+                &lt;/xsl:if&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+            &lt;/dd&gt;
+        &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- ArgumentList. This is passed $nodesc=true to output just the argument
+    types and names, and not any documentation for them. --&gt;
+&lt;xsl:template match=&quot;ArgumentList&quot;&gt;
+    &lt;xsl:param name=&quot;nodesc&quot;/&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;$nodesc&quot;&gt;
+            &lt;!-- $nodesc is true: just output the types and names --&gt;
+            &lt;xsl:apply-templates select=&quot;Argument[1]&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;'nocomma'&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+            &lt;xsl:apply-templates select=&quot;Argument[position() != 1]&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;'comma'&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:when test=&quot;Argument&quot;&gt;
+            &lt;!-- $nodesc is false: output the documentation --&gt;
+            &lt;div class=&quot;parameters&quot;&gt;
+                &lt;h6&gt;Parameters&lt;/h6&gt;
+                &lt;ul&gt;
+                    &lt;xsl:apply-templates/&gt;
+                &lt;/ul&gt;
+            &lt;/div&gt;
+        &lt;/xsl:when&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Argument. This is passed $nodesc=false to output the documentation,
+    or $nodesc=&quot;nocomma&quot; to output the type and name, or $nodesc=&quot;comma&quot;
+    to output a comma then the type and name.  --&gt;
+&lt;xsl:template match=&quot;Argument&quot;&gt;
+    &lt;xsl:param name=&quot;nodesc&quot;/&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;$nodesc&quot;&gt;
+            &lt;!-- $nodesc is true: just output the types and names --&gt;
+            &lt;xsl:if test=&quot;$nodesc = 'comma'&quot;&gt;
+                &lt;!-- Need a comma first. --&gt;
+                &lt;xsl:text&gt;, &lt;/xsl:text&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@in&quot;&gt;&lt;xsl:value-of select=&quot;concat(@in, ' ')&quot;/&gt;&lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@optional&quot;&gt;&lt;xsl:value-of select=&quot;concat(@optional, ' ')&quot;/&gt;&lt;/xsl:if&gt;
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:if test=&quot;@ellipsis&quot;&gt;&lt;xsl:text&gt;...&lt;/xsl:text&gt;&lt;/xsl:if&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+            &lt;xsl:if test=&quot;@value&quot;&gt;
+              &lt;xsl:text&gt;Default value: &lt;/xsl:text&gt;&lt;xsl:value-of select=&quot;@value&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@stringvalue&quot;&gt;
+              &lt;xsl:text&gt;Default value: &quot;&lt;/xsl:text&gt;&lt;xsl:value-of select=&quot;@stringvalue&quot;/&gt;&lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;
+            &lt;/xsl:if&gt;            
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;
+            &lt;!-- $nodesc is false: output the documentation --&gt;
+            &lt;li class=&quot;param&quot;&gt;
+                &lt;xsl:value-of select=&quot;@name&quot;/&gt;:
+                &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+            &lt;/li&gt;
+        &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Raises (for an Operation). It is already known that the list
+    is not empty. --&gt;
+&lt;xsl:template match=&quot;Raises&quot;&gt;
+    &lt;div class=&quot;exceptionlist&quot;&gt;
+        &lt;h5&gt;Exceptions&lt;/h5&gt;
+        &lt;ul&gt;
+            &lt;xsl:apply-templates/&gt;
+        &lt;/ul&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- RaiseException, the name of an exception in a Raises. --&gt;
+&lt;xsl:template match=&quot;RaiseException&quot;&gt;
+    &lt;li class=&quot;exception&quot;&gt;
+        &lt;xsl:value-of select=&quot;@name&quot;/&gt;:
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+    &lt;/li&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Type. --&gt;
+&lt;xsl:template match=&quot;Type&quot;&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;Type&quot;&gt;
+            &lt;xsl:text&gt;sequence &amp;lt;&lt;/xsl:text&gt;
+            &lt;xsl:apply-templates/&gt;
+            &lt;xsl:text&gt;&gt;&lt;/xsl:text&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+            &lt;xsl:value-of select=&quot;@type&quot;/&gt;
+            &lt;xsl:if test=&quot;@nullable&quot;&gt;
+                &lt;xsl:text&gt;?&lt;/xsl:text&gt;
+            &lt;/xsl:if&gt;
+        &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Enum. --&gt;
+&lt;xsl:template match=&quot;Enum[descriptive]&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;enum&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;div class=&quot;enumvalues&quot;&gt;
+            &lt;h4&gt;Values&lt;/h4&gt;
+            &lt;dl&gt;
+              &lt;xsl:apply-templates select=&quot;EnumValue&quot;/&gt;
+            &lt;/dl&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+&lt;xsl:template match=&quot;Enum[not(descriptive)]&quot;&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- EnumValue --&gt;
+&lt;xsl:template match=&quot;EnumValue&quot;&gt;
+  &lt;dt class=&quot;enumvalue&quot; id=&quot;{@id}&quot;&gt;
+    &lt;code&gt;
+      &lt;xsl:value-of select=&quot;@stringvalue&quot;/&gt;
+    &lt;/code&gt;
+  &lt;/dt&gt;
+  &lt;dd&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+  &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=&quot;descriptive[not(author)]&quot;&gt;
+  &lt;xsl:apply-templates select=&quot;version&quot;/&gt;
+  &lt;xsl:if test=&quot;author&quot;&gt;
+  &lt;/xsl:if&gt;
+  &lt;xsl:apply-templates select=&quot;description&quot;/&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- brief --&gt;
+&lt;xsl:template match=&quot;brief&quot;&gt;
+    &lt;div class=&quot;brief&quot;&gt;
+        &lt;p&gt;
+            &lt;xsl:apply-templates/&gt;
+        &lt;/p&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- description in ReturnType or Argument or ScopedName --&gt;
+&lt;xsl:template match=&quot;Type/descriptive/description|Argument/descriptive/description|Name/descriptive/description&quot;&gt;
+    &lt;!-- If the description contains just a single &lt;p&gt; then we omit
+        the &lt;p&gt; and just do its contents. --&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;p and count(*) = 1&quot;&gt;
+            &lt;xsl:apply-templates select=&quot;p/*|p/text()&quot;/&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;
+            &lt;div class=&quot;description&quot;&gt;
+                &lt;xsl:apply-templates/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Other description --&gt;
+&lt;xsl:template match=&quot;description&quot;&gt;
+    &lt;div class=&quot;description&quot;&gt;
+        &lt;xsl:apply-templates/&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- Code --&gt;
+&lt;xsl:template match=&quot;Code&quot;&gt;
+    &lt;div class=&quot;example&quot;&gt;
+            &lt;xsl:choose&gt;
+                &lt;xsl:when test=&quot;@lang&quot;&gt;
+                               &lt;h5&gt;&lt;xsl:value-of select=&quot;@lang&quot;/&gt;&lt;/h5&gt;
+                &lt;/xsl:when&gt;
+                &lt;xsl:otherwise&gt;
+                               &lt;h5&gt;Code example&lt;/h5&gt;
+                &lt;/xsl:otherwise&gt;
+            &lt;/xsl:choose&gt;
+        &lt;pre class=&quot;examplecode&quot;&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- webidl : literal Web IDL from input --&gt;
+&lt;xsl:template match=&quot;webidl&quot;&gt;
+    &lt;h5&gt;WebIDL&lt;/h5&gt;
+    &lt;pre class=&quot;webidl&quot;&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- author --&gt;
+&lt;xsl:template match=&quot;author&quot;&gt;
+    &lt;li class=&quot;author&quot;&gt;&lt;xsl:apply-templates/&gt;&lt;/li&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- version --&gt;
+&lt;xsl:template match=&quot;version&quot;&gt;
+    &lt;div class=&quot;version&quot;&gt;
+        &lt;h2&gt;
+            Version: &lt;xsl:apply-templates/&gt;
+        &lt;/h2&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- api-feature --&gt;
+&lt;xsl:template match=&quot;api-feature&quot;&gt;
+    &lt;dt&gt;
+        &lt;xsl:value-of select=&quot;@identifier&quot;/&gt;
+    &lt;/dt&gt;
+    &lt;dd&gt;
+        &lt;xsl:apply-templates/&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- param --&gt;
+&lt;xsl:template match=&quot;param&quot;&gt;
+    &lt;li&gt;
+        &lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;:
+        &lt;xsl:apply-templates/&gt;
+    &lt;/li&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- def-instantiated.
+    This assumes that only one interface in the module has a def-instantiated,
+    and that interface contains just one attribute. --&gt;
+&lt;xsl:template match=&quot;def-instantiated&quot;&gt;
+    &lt;xsl:variable name=&quot;ifacename&quot; select=&quot;../../@name&quot;/&gt;
+    &lt;p&gt;
+        &lt;xsl:choose&gt;
+            &lt;xsl:when test=&quot;count(descriptive/api-feature)=1&quot;&gt;
+                When the feature
+            &lt;/xsl:when&gt;
+            &lt;xsl:otherwise&gt;
+                When any of the features
+            &lt;/xsl:otherwise&gt;
+        &lt;/xsl:choose&gt;
+    &lt;/p&gt;
+    &lt;ul&gt;
+        &lt;xsl:for-each select=&quot;descriptive/api-feature&quot;&gt;
+            &lt;li&gt;&lt;code&gt;
+                &lt;xsl:value-of select=&quot;@identifier&quot;/&gt;
+            &lt;/code&gt;&lt;/li&gt;
+        &lt;/xsl:for-each&gt;
+    &lt;/ul&gt;
+    &lt;p&gt;
+        is successfully requested, the interface
+        &lt;code&gt;&lt;xsl:apply-templates select=&quot;../../Attribute/Type&quot;/&gt;&lt;/code&gt;
+        is instantiated, and the resulting object appears in the global
+        namespace as
+        &lt;code&gt;&lt;xsl:value-of select=&quot;../../../Implements[@name2=$ifacename]/@name1&quot;/&gt;.&lt;xsl:value-of select=&quot;../../Attribute/@name&quot;/&gt;&lt;/code&gt;.
+    &lt;/p&gt;
+&lt;/xsl:template&gt;
+
+
+
+&lt;!-- html elements --&gt;
+&lt;xsl:template match=&quot;a|b|br|dd|dl|dt|em|li|p|table|td|th|tr|ul&quot;&gt;
+    &lt;xsl:element name=&quot;{name()}&quot;&gt;&lt;xsl:for-each select=&quot;@*&quot;&gt;&lt;xsl:attribute name=&quot;{name()}&quot;&gt;&lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;/xsl:attribute&gt;&lt;/xsl:for-each&gt;&lt;xsl:apply-templates/&gt;&lt;/xsl:element&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template name=&quot;summary&quot;&gt;
+  &lt;table class=&quot;summary&quot;&gt;
+    &lt;thead&gt;
+      &lt;tr&gt;&lt;th&gt;Interface&lt;/th&gt;&lt;th&gt;Method&lt;/th&gt;&lt;/tr&gt;
+    &lt;/thead&gt;
+    &lt;tbody&gt;
+      &lt;xsl:for-each select=&quot;Interface[descriptive]&quot;&gt;
+        &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
+        &lt;td&gt;
+          &lt;xsl:for-each select=&quot;Operation&quot;&gt;
+
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;a href=&quot;#{concat(@name,generate-id(.))}&quot;&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/a&gt;
+            &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+            &lt;xsl:for-each select=&quot;ArgumentList/Argument&quot;&gt;
+              &lt;xsl:variable name=&quot;type&quot;&gt;&lt;xsl:apply-templates select=&quot;Type&quot;/&gt;&lt;/xsl:variable&gt;
+              &lt;xsl:value-of select=&quot;concat(normalize-space($type),' ',@name)&quot;/&gt;
+              &lt;xsl:if test=&quot;position() != last()&quot;&gt;, &lt;/xsl:if&gt;
+            &lt;/xsl:for-each&gt;
+            &lt;xsl:text&gt;)&lt;/xsl:text&gt;
+            &lt;xsl:if test=&quot;position()!=last()&quot;&gt;&lt;br/&gt;&lt;/xsl:if&gt;
+          &lt;/xsl:for-each&gt;
+        &lt;/td&gt;
+        &lt;/tr&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/tbody&gt;
+  &lt;/table&gt;
+&lt;/xsl:template&gt;
+
+&lt;!-- &lt;ref&gt; element in literal Web IDL. --&gt;
+&lt;xsl:template match=&quot;ref[@ref]&quot;&gt;
+    &lt;a href=&quot;{@ref}&quot;&gt;
+        &lt;xsl:apply-templates/&gt;
+    &lt;/a&gt;
+&lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocsrcwidlprocxmltohtmlxslorig"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl.orig (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl.orig                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/src/widlprocxmltohtml.xsl.orig        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,828 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
+&lt;!--====================================================================
+$Id: widlprocxmltohtml.xsl 407 2009-10-26 13:48:48Z tpr $
+Copyright 2009 Aplix Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+XSLT stylesheet to convert widlprocxml into html documentation.
+=====================================================================--&gt;
+&lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&gt;
+&lt;xsl:output method=&quot;html&quot; encoding=&quot;utf-8&quot; indent=&quot;yes&quot; doctype-public=&quot;html&quot;/&gt;
+
+&lt;xsl:param name=&quot;date&quot; select=&quot;'error: missing date'&quot;/&gt;
+
+&lt;xsl:variable name=&quot;title&quot; select=&quot;concat('The ',/Definitions/descriptive/name,' Module - Version ',/Definitions/descriptive/version)&quot;/&gt;
+
+&lt;!--Root of document.--&gt;
+&lt;xsl:template match=&quot;/&quot;&gt;
+    &lt;html&gt;
+        &lt;head&gt;
+            &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;widlhtml.css&quot; media=&quot;screen&quot;/&gt;
+            &lt;title&gt;
+                &lt;xsl:value-of select=&quot;$title&quot;/&gt;
+            &lt;/title&gt;
+        &lt;/head&gt;
+        &lt;body&gt;
+            &lt;xsl:apply-templates/&gt;
+        &lt;/body&gt;
+    &lt;/html&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Root of Definitions.--&gt;
+&lt;xsl:template match=&quot;Definitions&quot;&gt;
+    &lt;div class=&quot;api&quot; id=&quot;{@id}&quot;&gt;
+        &lt;a href=&quot;http://bondi.omtp.org&quot;&gt;&lt;img src=&quot;http://www.omtp.org/images/BondiSmall.jpg&quot; alt=&quot;Bondi logo&quot;/&gt;&lt;/a&gt;
+        &lt;h1&gt;&lt;xsl:value-of select=&quot;$title&quot;/&gt;&lt;/h1&gt;
+        &lt;h3&gt;12 May 2009&lt;/h3&gt;
+
+        &lt;h2&gt;Authors&lt;/h2&gt;
+        &lt;ul class=&quot;authors&quot;&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive/author&quot;/&gt;
+        &lt;/ul&gt;
+
+        &lt;p class=&quot;copyright&quot;&gt;&lt;small&gt;© The authors, 2012. All rights reserved.&lt;/small&gt;&lt;/p&gt;
+
+        &lt;hr/&gt;
+
+        &lt;h2&gt;Abstract&lt;/h2&gt;
+
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/description&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+
+        &lt;h2&gt;Table of Contents&lt;/h2&gt;
+        &lt;ul class=&quot;toc&quot;&gt;
+          &lt;li&gt;&lt;a href=&quot;#intro&quot;&gt;Introduction&lt;/a&gt;
+          &lt;ul&gt;
+            &lt;xsl:if test=&quot;descriptive/def-api-feature-set&quot;&gt;
+              &lt;li&gt;&lt;a href=&quot;#def-api-feature-sets&quot;&gt;Feature set&lt;/a&gt;&lt;/li&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;descriptive/def-api-feature&quot;&gt;
+              &lt;li&gt;&lt;a href=&quot;#def-api-features&quot;&gt;Features&lt;/a&gt;&lt;/li&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;descriptive/def-device-cap&quot;&gt;
+              &lt;li&gt;&lt;a href=&quot;#def-device-caps&quot;&gt;Device Capabilities&lt;/a&gt;&lt;/li&gt;
+            &lt;/xsl:if&gt;
+          &lt;/ul&gt;
+          &lt;/li&gt;
+          &lt;xsl:if test=&quot;Typedef&quot;&gt;
+            &lt;li&gt;&lt;a href=&quot;#typedefs&quot;&gt;Type Definitions&lt;/a&gt;
+            &lt;ul class=&quot;toc&quot;&gt;
+              &lt;xsl:for-each select=&quot;Typedef[descriptive]&quot;&gt;
+                &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+              &lt;/xsl:for-each&gt;
+            &lt;/ul&gt;
+            &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Interface&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#interfaces&quot;&gt;Interfaces&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Interface[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Dictionary&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#dictionaries&quot;&gt;Dictionary types&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Dictionary[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Callback&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#callbacks&quot;&gt;Callbacks&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Callback[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+          &lt;xsl:if test=&quot;Enum&quot;&gt;
+                  &lt;li&gt;&lt;a href=&quot;#enums&quot;&gt;Enums&lt;/a&gt;
+                  &lt;ul class=&quot;toc&quot;&gt;
+                  &lt;xsl:for-each select=&quot;Enum[descriptive]&quot;&gt;
+                    &lt;li&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                  &lt;/ul&gt;
+                  &lt;/li&gt;
+          &lt;/xsl:if&gt;
+        &lt;/ul&gt;
+
+        &lt;hr/&gt;
+
+        &lt;h2&gt;Summary of Methods&lt;/h2&gt;
+        &lt;xsl:call-template name=&quot;summary&quot;/&gt;
+        
+        &lt;h2 id=&quot;intro&quot;&gt;Introduction&lt;/h2&gt;
+
+        &lt;xsl:apply-templates select=&quot;descriptive/description&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+
+        &lt;xsl:if test=&quot;descriptive/def-api-feature-set&quot;&gt;
+            &lt;div id=&quot;def-api-feature-sets&quot; class=&quot;def-api-feature-sets&quot;&gt;
+                &lt;h3 id=&quot;features&quot;&gt;Feature set&lt;/h3&gt;
+                &lt;p&gt;This is the URI used to declare this API's feature set, for use in bondi.requestFeature. For the URL, the list of features included by the feature set is provided.&lt;/p&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/def-api-feature-set&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;descriptive/def-api-feature&quot;&gt;
+            &lt;div id=&quot;def-api-features&quot; class=&quot;def-api-features&quot;&gt;
+                &lt;h3 id=&quot;features&quot;&gt;Features&lt;/h3&gt;
+                &lt;p&gt;This is the list of URIs used to declare this API's features, for use in bondi.requestFeature. For each URL, the list of functions covered is provided.&lt;/p&gt;
+                &lt;xsl:apply-templates select=&quot;Interface/descriptive/def-instantiated&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/def-api-feature&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;descriptive/def-device-cap&quot;&gt;
+            &lt;div class=&quot;def-device-caps&quot; id=&quot;def-device-caps&quot;&gt;
+                &lt;h3&gt;Device capabilities&lt;/h3&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;descriptive/def-device-cap&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Typedef&quot;&gt;
+            &lt;div class=&quot;typedefs&quot; id=&quot;typedefs&quot;&gt;
+                &lt;h2&gt;Type Definitions&lt;/h2&gt;
+                &lt;xsl:apply-templates select=&quot;Typedef[descriptive]&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Interface&quot;&gt;
+            &lt;div class=&quot;interfaces&quot; id=&quot;interfaces&quot;&gt;
+                        &lt;h2&gt;Interfaces&lt;/h2&gt;
+                           &lt;xsl:apply-templates select=&quot;Interface&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Dictionary&quot;&gt;
+            &lt;div class=&quot;dictionaries&quot; id=&quot;dictionaries&quot;&gt;
+                        &lt;h2&gt;Dictionary types&lt;/h2&gt;
+                        &lt;xsl:apply-templates select=&quot;Dictionary&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Callback&quot;&gt;
+            &lt;div class=&quot;callbacks&quot; id=&quot;callbacks&quot;&gt;
+                        &lt;h2&gt;Callbacks&lt;/h2&gt;
+                        &lt;xsl:apply-templates select=&quot;Callback&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Enum&quot;&gt;
+            &lt;div class=&quot;enums&quot; id=&quot;enums&quot;&gt;
+                        &lt;h2&gt;Enums&lt;/h2&gt;
+                        &lt;xsl:apply-templates select=&quot;Enum&quot;/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--def-api-feature-set--&gt;
+&lt;xsl:template match=&quot;def-api-feature-set&quot;&gt;
+      &lt;dl class=&quot;def-api-feature-set&quot;&gt;
+          &lt;dt&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/dt&gt;
+          &lt;dd&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+            &lt;xsl:if test=&quot;descriptive/api-feature&quot;&gt;
+              &lt;div class=&quot;api-features&quot;&gt;
+                &lt;p&gt;
+                  Includes API features:
+                &lt;/p&gt;
+                &lt;ul&gt;
+                  &lt;xsl:for-each select=&quot;descriptive/api-feature&quot;&gt;
+                    &lt;li&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                &lt;/ul&gt;
+              &lt;/div&gt;
+            &lt;/xsl:if&gt;
+          &lt;/dd&gt;
+      &lt;/dl&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--def-api-feature--&gt;
+&lt;xsl:template match=&quot;def-api-feature&quot;&gt;
+      &lt;dl class=&quot;def-api-feature&quot;&gt;
+          &lt;dt&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/dt&gt;
+          &lt;dd&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+            &lt;xsl:if test=&quot;descriptive/device-cap&quot;&gt;
+              &lt;div class=&quot;device-caps&quot;&gt;
+                &lt;p&gt;
+                  Device capabilities:
+                &lt;/p&gt;
+                &lt;ul&gt;
+                  &lt;xsl:for-each select=&quot;descriptive/device-cap&quot;&gt;
+                    &lt;li&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;&lt;/li&gt;
+                  &lt;/xsl:for-each&gt;
+                &lt;/ul&gt;
+              &lt;/div&gt;
+            &lt;/xsl:if&gt;
+          &lt;/dd&gt;
+      &lt;/dl&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--def-device-cap--&gt;
+&lt;xsl:template match=&quot;def-device-cap&quot;&gt;
+    &lt;dt class=&quot;def-device-cap&quot;&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;&lt;/dt&gt;
+    &lt;dd&gt;
+      &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+      &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+      &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+      &lt;xsl:if test=&quot;descriptive/param&quot;&gt;
+        &lt;div class=&quot;device-caps&quot;&gt;
+          &lt;p&gt;Security parameters:&lt;/p&gt;
+          &lt;ul&gt;
+            &lt;xsl:apply-templates select=&quot;descriptive/param&quot;/&gt;
+          &lt;/ul&gt;
+        &lt;/div&gt;
+      &lt;/xsl:if&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Exception: not implemented--&gt;
+&lt;!--Valuetype: not implemented--&gt;
+&lt;xsl:template match=&quot;Exception|Valuetype|Const&quot;&gt;
+    &lt;xsl:if test=&quot;descriptive&quot;&gt;
+        &lt;xsl:message terminate=&quot;yes&quot;&gt;element &lt;xsl:value-of select=&quot;name()&quot;/&gt; not supported&lt;/xsl:message&gt;
+    &lt;/xsl:if&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Typedef.--&gt;
+&lt;xsl:template match=&quot;Typedef[descriptive]&quot;&gt;
+    &lt;div class=&quot;typedef&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;2.&lt;xsl:number value=&quot;position()&quot;/&gt;. &lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Interface.--&gt;
+&lt;xsl:template match=&quot;Interface[descriptive]&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;interface&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;../Implements[@name2=$name]/webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;InterfaceInheritance&quot;/&gt;
+        &lt;xsl:if test=&quot;Const/descriptive&quot;&gt;
+            &lt;div class=&quot;consts&quot;&gt;
+                &lt;h4&gt;Constants&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Const&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;ExtendedAttributeList/ExtendedAttribute/descriptive&quot;&gt;
+            &lt;div class=&quot;constructors&quot;&gt;
+                &lt;h4&gt;Constructors&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;ExtendedAttributeList/ExtendedAttribute&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Attribute/descriptive&quot;&gt;
+            &lt;div class=&quot;attributes&quot;&gt;
+                &lt;h4&gt;Attributes&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Attribute&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Operation/descriptive&quot;&gt;
+            &lt;div class=&quot;methods&quot;&gt;
+                &lt;h4&gt;Methods&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Operation&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+&lt;xsl:template match=&quot;Interface[not(descriptive)]&quot;&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Dictionary.--&gt;
+&lt;xsl:template match=&quot;Dictionary[descriptive]&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;dictionary&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;InterfaceInheritance&quot;/&gt;
+        &lt;xsl:if test=&quot;Const/descriptive&quot;&gt;
+            &lt;div class=&quot;consts&quot;&gt;
+                &lt;h4&gt;Constants&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Const&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:if test=&quot;Attribute/descriptive&quot;&gt;
+            &lt;div class=&quot;attributes&quot;&gt;
+                &lt;h4&gt;Attributes&lt;/h4&gt;
+                &lt;dl&gt;
+                  &lt;xsl:apply-templates select=&quot;Attribute&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+&lt;xsl:template match=&quot;Dictionary[not(descriptive)]&quot;&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=&quot;InterfaceInheritance/ScopedNameList&quot;&gt;
+              &lt;p&gt;
+                &lt;xsl:text&gt;This interface inherits from: &lt;/xsl:text&gt;
+                &lt;xsl:for-each select=&quot;Name&quot;&gt;
+                  &lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;
+                  &lt;xsl:if test=&quot;position!=last()&quot;&gt;, &lt;/xsl:if&gt;
+                &lt;/xsl:for-each&gt;
+              &lt;/p&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Attribute--&gt;
+&lt;xsl:template match=&quot;Attribute&quot;&gt;
+    &lt;dt class=&quot;attribute&quot; id=&quot;{@name}&quot;&gt;
+        &lt;code&gt;
+            &lt;xsl:if test=&quot;@stringifier&quot;&gt;
+                stringifier
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@readonly&quot;&gt;
+                readonly
+            &lt;/xsl:if&gt;
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+        &lt;/code&gt;&lt;/dt&gt;
+        &lt;dd&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;GetRaises&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;SetRaises&quot;/&gt;
+          &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Const--&gt;
+&lt;xsl:template match=&quot;Const&quot;&gt;
+  &lt;dt class=&quot;const&quot; id=&quot;{@id}&quot;&gt;
+    &lt;code&gt;
+      &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+      &lt;xsl:text&gt; &lt;/xsl:text&gt;
+      &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+    &lt;/code&gt;
+  &lt;/dt&gt;
+  &lt;dd&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+  &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--ExtendedAttribute name==Constructor || name==NamedConstructor--&gt;
+&lt;xsl:template match=&quot;ExtendedAttributeList/ExtendedAttribute&quot;&gt;
+    &lt;dt class=&quot;constructor&quot; id=&quot;{concat(@name,generate-id(.))}&quot;&gt;
+        &lt;code&gt;
+            &lt;xsl:value-of select=&quot;../../@name&quot;/&gt;
+             &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+            &lt;xsl:apply-templates select=&quot;ArgumentList&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;1&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+            &lt;xsl:text&gt;);&lt;/xsl:text&gt;
+        &lt;/code&gt;
+    &lt;/dt&gt;
+    &lt;dd&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;ArgumentList&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;Raises&quot;/&gt;
+        &lt;xsl:if test=&quot;descriptive/api-feature&quot;&gt;
+            &lt;div class=&quot;api-features&quot;&gt;
+                &lt;h6&gt;API features&lt;/h6&gt;
+                &lt;dl&gt;
+                    &lt;xsl:apply-templates select=&quot;descriptive/api-feature&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Operation--&gt;
+&lt;xsl:template match=&quot;Operation&quot;&gt;
+    &lt;dt class=&quot;method&quot; id=&quot;{concat(@name,generate-id(.))}&quot;&gt;
+        &lt;code&gt;
+            &lt;xsl:if test=&quot;@stringifier&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@stringifier, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@omittable&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@omittable, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@getter&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@getter, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@setter&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@setter, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@creator&quot;&gt;
+                    &lt;xsl:value-of select=&quot;concat(@creator, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@deleter&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@deleter, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@caller&quot;&gt;
+                &lt;xsl:value-of select=&quot;concat(@caller, ' ')&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+            &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+            &lt;xsl:apply-templates select=&quot;ArgumentList&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;1&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+            &lt;xsl:text&gt;);&lt;/xsl:text&gt;
+        &lt;/code&gt;
+    &lt;/dt&gt;
+    &lt;dd&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;ArgumentList&quot;/&gt;
+        &lt;xsl:if test=&quot;Type/descriptive&quot;&gt;
+          &lt;div class=&quot;returntype&quot;&gt;
+            &lt;h5&gt;Return value&lt;/h5&gt;
+            &lt;xsl:apply-templates select=&quot;Type/descriptive&quot;/&gt;
+          &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:apply-templates select=&quot;Raises&quot;/&gt;
+        &lt;xsl:if test=&quot;descriptive/api-feature&quot;&gt;
+            &lt;div class=&quot;api-features&quot;&gt;
+                &lt;h6&gt;API features&lt;/h6&gt;
+                &lt;dl&gt;
+                    &lt;xsl:apply-templates select=&quot;descriptive/api-feature&quot;/&gt;
+                &lt;/dl&gt;
+            &lt;/div&gt;
+        &lt;/xsl:if&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Callback--&gt;
+&lt;xsl:template match=&quot;Callback&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;callback&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+
+            &lt;dd&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+                &lt;div class=&quot;synopsis&quot;&gt;
+                    &lt;h6&gt;Signature&lt;/h6&gt;
+                    &lt;pre&gt;
+                        &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+                        &lt;xsl:text&gt; &lt;/xsl:text&gt;
+                        &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+                        &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+                        &lt;xsl:apply-templates select=&quot;ArgumentList&quot;&gt;
+                            &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;1&quot;/&gt;
+                        &lt;/xsl:apply-templates&gt;
+                        &lt;xsl:text&gt;);
+&lt;/xsl:text&gt;&lt;/pre&gt;
+                &lt;/div&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+                &lt;xsl:apply-templates select=&quot;ArgumentList&quot;/&gt;
+                &lt;xsl:if test=&quot;Type/descriptive&quot;&gt;
+                  &lt;div class=&quot;returntype&quot;&gt;
+                    &lt;h5&gt;Return value&lt;/h5&gt;
+                    &lt;xsl:apply-templates select=&quot;Type/descriptive&quot;/&gt;
+                  &lt;/div&gt;
+                &lt;/xsl:if&gt;
+                &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+            &lt;/dd&gt;
+        &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--ArgumentList. This is passed $nodesc=true to output just the argument
+    types and names, and not any documentation for them.--&gt;
+&lt;xsl:template match=&quot;ArgumentList&quot;&gt;
+    &lt;xsl:param name=&quot;nodesc&quot;/&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;$nodesc&quot;&gt;
+            &lt;!--$nodesc is true: just output the types and names--&gt;
+            &lt;xsl:apply-templates select=&quot;Argument[1]&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;'nocomma'&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+            &lt;xsl:apply-templates select=&quot;Argument[position() != 1]&quot;&gt;
+                &lt;xsl:with-param name=&quot;nodesc&quot; select=&quot;'comma'&quot;/&gt;
+            &lt;/xsl:apply-templates&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:when test=&quot;Argument&quot;&gt;
+            &lt;!--$nodesc is false: output the documentation--&gt;
+            &lt;div class=&quot;parameters&quot;&gt;
+                &lt;h6&gt;Parameters&lt;/h6&gt;
+                &lt;ul&gt;
+                    &lt;xsl:apply-templates/&gt;
+                &lt;/ul&gt;
+            &lt;/div&gt;
+        &lt;/xsl:when&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Argument. This is passed $nodesc=false to output the documentation,
+    or $nodesc=&quot;nocomma&quot; to output the type and name, or $nodesc=&quot;comma&quot;
+    to output a comma then the type and name. --&gt;
+&lt;xsl:template match=&quot;Argument&quot;&gt;
+    &lt;xsl:param name=&quot;nodesc&quot;/&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;$nodesc&quot;&gt;
+            &lt;!--$nodesc is true: just output the types and names--&gt;
+            &lt;xsl:if test=&quot;$nodesc = 'comma'&quot;&gt;
+                &lt;!--Need a comma first.--&gt;
+                &lt;xsl:text&gt;, &lt;/xsl:text&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@in&quot;&gt;&lt;xsl:value-of select=&quot;concat(@in, ' ')&quot;/&gt;&lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@optional&quot;&gt;&lt;xsl:value-of select=&quot;concat(@optional, ' ')&quot;/&gt;&lt;/xsl:if&gt;
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:if test=&quot;@ellipsis&quot;&gt;&lt;xsl:text&gt;...&lt;/xsl:text&gt;&lt;/xsl:if&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+            &lt;xsl:if test=&quot;@value&quot;&gt;
+              &lt;xsl:text&gt;Default value: &lt;/xsl:text&gt;&lt;xsl:value-of select=&quot;@value&quot;/&gt;
+            &lt;/xsl:if&gt;
+            &lt;xsl:if test=&quot;@stringvalue&quot;&gt;
+              &lt;xsl:text&gt;Default value: &quot;&lt;/xsl:text&gt;&lt;xsl:value-of select=&quot;@stringvalue&quot;/&gt;&lt;xsl:text&gt;&quot;&lt;/xsl:text&gt;
+            &lt;/xsl:if&gt;            
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;
+            &lt;!--$nodesc is false: output the documentation--&gt;
+            &lt;li class=&quot;param&quot;&gt;
+                &lt;xsl:value-of select=&quot;@name&quot;/&gt;:
+                &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+            &lt;/li&gt;
+        &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Raises (for an Operation). It is already known that the list
+    is not empty.--&gt;
+&lt;xsl:template match=&quot;Raises&quot;&gt;
+    &lt;div class=&quot;exceptionlist&quot;&gt;
+        &lt;h5&gt;Exceptions&lt;/h5&gt;
+        &lt;ul&gt;
+            &lt;xsl:apply-templates/&gt;
+        &lt;/ul&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--RaiseException, the name of an exception in a Raises.--&gt;
+&lt;xsl:template match=&quot;RaiseException&quot;&gt;
+    &lt;li class=&quot;exception&quot;&gt;
+        &lt;xsl:value-of select=&quot;@name&quot;/&gt;:
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+    &lt;/li&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Type.--&gt;
+&lt;xsl:template match=&quot;Type&quot;&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;Type&quot;&gt;
+            &lt;xsl:text&gt;sequence &amp;lt;&lt;/xsl:text&gt;
+            &lt;xsl:apply-templates/&gt;
+            &lt;xsl:text&gt;&gt;&lt;/xsl:text&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;
+            &lt;xsl:value-of select=&quot;@name&quot;/&gt;
+            &lt;xsl:value-of select=&quot;@type&quot;/&gt;
+            &lt;xsl:if test=&quot;@nullable&quot;&gt;
+                &lt;xsl:text&gt;?&lt;/xsl:text&gt;
+            &lt;/xsl:if&gt;
+        &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Enum.--&gt;
+&lt;xsl:template match=&quot;Enum[descriptive]&quot;&gt;
+    &lt;xsl:variable name=&quot;name&quot; select=&quot;@name&quot;/&gt;
+    &lt;div class=&quot;enum&quot; id=&quot;{@id}&quot;&gt;
+        &lt;h3&gt;&lt;code&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/code&gt;&lt;/h3&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;webidl&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+        &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+        &lt;div class=&quot;enumvalues&quot;&gt;
+            &lt;h4&gt;Values&lt;/h4&gt;
+            &lt;dl&gt;
+              &lt;xsl:apply-templates select=&quot;EnumValue&quot;/&gt;
+            &lt;/dl&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+&lt;xsl:template match=&quot;Enum[not(descriptive)]&quot;&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--EnumValue--&gt;
+&lt;xsl:template match=&quot;EnumValue&quot;&gt;
+  &lt;dt class=&quot;enumvalue&quot; id=&quot;{@id}&quot;&gt;
+    &lt;code&gt;
+      &lt;xsl:value-of select=&quot;@stringvalue&quot;/&gt;
+    &lt;/code&gt;
+  &lt;/dt&gt;
+  &lt;dd&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/brief&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive&quot;/&gt;
+    &lt;xsl:apply-templates select=&quot;descriptive/Code&quot;/&gt;
+  &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template match=&quot;descriptive[not(author)]&quot;&gt;
+  &lt;xsl:apply-templates select=&quot;version&quot;/&gt;
+  &lt;xsl:if test=&quot;author&quot;&gt;
+  &lt;/xsl:if&gt;
+  &lt;xsl:apply-templates select=&quot;description&quot;/&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--brief--&gt;
+&lt;xsl:template match=&quot;brief&quot;&gt;
+    &lt;div class=&quot;brief&quot;&gt;
+        &lt;p&gt;
+            &lt;xsl:apply-templates/&gt;
+        &lt;/p&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--description in ReturnType or Argument or ScopedName--&gt;
+&lt;xsl:template match=&quot;Type/descriptive/description|Argument/descriptive/description|Name/descriptive/description&quot;&gt;
+    &lt;!--If the description contains just a single &lt;p&gt; then we omit
+        the &lt;p&gt; and just do its contents.--&gt;
+    &lt;xsl:choose&gt;
+        &lt;xsl:when test=&quot;p and count(*) = 1&quot;&gt;
+            &lt;xsl:apply-templates select=&quot;p/*|p/text()&quot;/&gt;
+        &lt;/xsl:when&gt;
+        &lt;xsl:otherwise&gt;
+            &lt;div class=&quot;description&quot;&gt;
+                &lt;xsl:apply-templates/&gt;
+            &lt;/div&gt;
+        &lt;/xsl:otherwise&gt;
+    &lt;/xsl:choose&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Other description--&gt;
+&lt;xsl:template match=&quot;description&quot;&gt;
+    &lt;div class=&quot;description&quot;&gt;
+        &lt;xsl:apply-templates/&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--Code--&gt;
+&lt;xsl:template match=&quot;Code&quot;&gt;
+    &lt;div class=&quot;example&quot;&gt;
+            &lt;xsl:choose&gt;
+                &lt;xsl:when test=&quot;@lang&quot;&gt;
+                               &lt;h5&gt;&lt;xsl:value-of select=&quot;@lang&quot;/&gt;&lt;/h5&gt;
+                &lt;/xsl:when&gt;
+                &lt;xsl:otherwise&gt;
+                               &lt;h5&gt;Code example&lt;/h5&gt;
+                &lt;/xsl:otherwise&gt;
+            &lt;/xsl:choose&gt;
+        &lt;pre class=&quot;examplecode&quot;&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--webidl : literal Web IDL from input--&gt;
+&lt;xsl:template match=&quot;webidl&quot;&gt;
+    &lt;h5&gt;WebIDL&lt;/h5&gt;
+    &lt;pre class=&quot;webidl&quot;&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--author--&gt;
+&lt;xsl:template match=&quot;author&quot;&gt;
+    &lt;li class=&quot;author&quot;&gt;&lt;xsl:apply-templates/&gt;&lt;/li&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--version--&gt;
+&lt;xsl:template match=&quot;version&quot;&gt;
+    &lt;div class=&quot;version&quot;&gt;
+        &lt;h2&gt;
+            Version: &lt;xsl:apply-templates/&gt;
+        &lt;/h2&gt;
+    &lt;/div&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--api-feature--&gt;
+&lt;xsl:template match=&quot;api-feature&quot;&gt;
+    &lt;dt&gt;
+        &lt;xsl:value-of select=&quot;@identifier&quot;/&gt;
+    &lt;/dt&gt;
+    &lt;dd&gt;
+        &lt;xsl:apply-templates/&gt;
+    &lt;/dd&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--param--&gt;
+&lt;xsl:template match=&quot;param&quot;&gt;
+    &lt;li&gt;
+        &lt;code&gt;&lt;xsl:value-of select=&quot;@identifier&quot;/&gt;&lt;/code&gt;:
+        &lt;xsl:apply-templates/&gt;
+    &lt;/li&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--def-instantiated.
+    This assumes that only one interface in the module has a def-instantiated,
+    and that interface contains just one attribute.--&gt;
+&lt;xsl:template match=&quot;def-instantiated&quot;&gt;
+    &lt;xsl:variable name=&quot;ifacename&quot; select=&quot;../../@name&quot;/&gt;
+    &lt;p&gt;
+        &lt;xsl:choose&gt;
+            &lt;xsl:when test=&quot;count(descriptive/api-feature)=1&quot;&gt;
+                When the feature
+            &lt;/xsl:when&gt;
+            &lt;xsl:otherwise&gt;
+                When any of the features
+            &lt;/xsl:otherwise&gt;
+        &lt;/xsl:choose&gt;
+    &lt;/p&gt;
+    &lt;ul&gt;
+        &lt;xsl:for-each select=&quot;descriptive/api-feature&quot;&gt;
+            &lt;li&gt;&lt;code&gt;
+                &lt;xsl:value-of select=&quot;@identifier&quot;/&gt;
+            &lt;/code&gt;&lt;/li&gt;
+        &lt;/xsl:for-each&gt;
+    &lt;/ul&gt;
+    &lt;p&gt;
+        is successfully requested, the interface
+        &lt;code&gt;&lt;xsl:apply-templates select=&quot;../../Attribute/Type&quot;/&gt;&lt;/code&gt;
+        is instantiated, and the resulting object appears in the global
+        namespace as
+        &lt;code&gt;&lt;xsl:value-of select=&quot;../../../Implements[@name2=$ifacename]/@name1&quot;/&gt;.&lt;xsl:value-of select=&quot;../../Attribute/@name&quot;/&gt;&lt;/code&gt;.
+    &lt;/p&gt;
+&lt;/xsl:template&gt;
+
+
+
+&lt;!--html elements--&gt;
+&lt;xsl:template match=&quot;a|b|br|dd|dl|dt|em|li|p|table|td|th|tr|ul&quot;&gt;
+    &lt;xsl:element name=&quot;{name()}&quot;&gt;&lt;xsl:for-each select=&quot;@*&quot;&gt;&lt;xsl:attribute name=&quot;{name()}&quot;&gt;&lt;xsl:value-of select=&quot;.&quot;/&gt;&lt;/xsl:attribute&gt;&lt;/xsl:for-each&gt;&lt;xsl:apply-templates/&gt;&lt;/xsl:element&gt;
+&lt;/xsl:template&gt;
+
+&lt;xsl:template name=&quot;summary&quot;&gt;
+  &lt;table class=&quot;summary&quot;&gt;
+    &lt;thead&gt;
+      &lt;tr&gt;&lt;th&gt;Interface&lt;/th&gt;&lt;th&gt;Method&lt;/th&gt;&lt;/tr&gt;
+    &lt;/thead&gt;
+    &lt;tbody&gt;
+      &lt;xsl:for-each select=&quot;Interface[descriptive]&quot;&gt;
+        &lt;tr&gt;&lt;td&gt;&lt;a href=&quot;#{@id}&quot;&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
+        &lt;td&gt;
+          &lt;xsl:for-each select=&quot;Operation&quot;&gt;
+
+            &lt;xsl:apply-templates select=&quot;Type&quot;/&gt;
+            &lt;xsl:text&gt; &lt;/xsl:text&gt;
+            &lt;a href=&quot;#{concat(@name,generate-id(.))}&quot;&gt;&lt;xsl:value-of select=&quot;@name&quot;/&gt;&lt;/a&gt;
+            &lt;xsl:text&gt;(&lt;/xsl:text&gt;
+            &lt;xsl:for-each select=&quot;ArgumentList/Argument&quot;&gt;
+              &lt;xsl:variable name=&quot;type&quot;&gt;&lt;xsl:apply-templates select=&quot;Type&quot;/&gt;&lt;/xsl:variable&gt;
+              &lt;xsl:value-of select=&quot;concat(normalize-space($type),' ',@name)&quot;/&gt;
+              &lt;xsl:if test=&quot;position() != last()&quot;&gt;, &lt;/xsl:if&gt;
+            &lt;/xsl:for-each&gt;
+            &lt;xsl:text&gt;)&lt;/xsl:text&gt;
+            &lt;xsl:if test=&quot;position()!=last()&quot;&gt;&lt;br/&gt;&lt;/xsl:if&gt;
+          &lt;/xsl:for-each&gt;
+        &lt;/td&gt;
+        &lt;/tr&gt;
+      &lt;/xsl:for-each&gt;
+    &lt;/tbody&gt;
+  &lt;/table&gt;
+&lt;/xsl:template&gt;
+
+&lt;!--&lt;ref&gt; element in literal Web IDL.--&gt;
+&lt;xsl:template match=&quot;ref[@ref]&quot;&gt;
+    &lt;a href=&quot;{@ref}&quot;&gt;
+        &lt;xsl:apply-templates/&gt;
+    &lt;/a&gt;
+&lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestMakefile"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/Makefile (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/Makefile                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/Makefile        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+########################################################################
+# $Id: Makefile 418 2010-06-16 15:26:51Z tpr $
+# Copyright 2009 Aplix Corporation. All rights reserved.
+# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#     http://www.apache.org/licenses/LICENSE-2.0
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+########################################################################
+
+UNAME = $(shell uname)
+VALIDTESTDIR = valid/idl
+VALIDTESTREFDIR = valid/xml
+VALIDTESTOBJDIR = valid/obj
+INVALIDTESTDIR = invalid/idl
+INVALIDTESTREFDIR = invalid/error
+INVALIDTESTOBJDIR = invalid/obj
+
+# The settings of SRCDIR (where to find the xsl style sheets), OBJDIR (where to
+# find widlproc and widlprocxml.dtd) and VALDTESTOBJDIR (where to put the
+# resulting XML files) reflect the directory
+# structure of the released widlproc.zip file when unzipped. ../Makefile calls
+# this Makefile with these settings overridden to reflect the directory
+# structure in svn.
+SRCDIR = ..
+OBJDIR = ..
+
+########################################################################
+# Linux configuration
+#
+ifneq (,$(filter Linux%, $(UNAME))) 
+
+EXESUFFIX =
+
+else
+########################################################################
+# Darwin configuration
+#
+ifneq (,$(filter Darwin%, $(UNAME))) 
+
+EXESUFFIX =
+
+else
+########################################################################
+# Windows (cygwin but using MS compiler) configuration
+#
+ifneq (,$(filter CYGWIN%, $(UNAME))) 
+
+EXESUFFIX = .exe
+
+endif
+endif
+endif
+
+########################################################################
+# Common makefile
+#
+WIDLPROC = $(OBJDIR)/widlproc$(EXESUFFIX)
+DTD = $(OBJDIR)/widlprocxml.dtd
+
+VALID_WIDLS = $(patsubst $(VALIDTESTDIR)/%, %, $(wildcard $(VALIDTESTDIR)/*.widl))
+INVALID_WIDLS = $(patsubst $(INVALIDTESTDIR)/%, %, $(wildcard $(INVALIDTESTDIR)/*.widl))
+
+test : $(patsubst %.widl, $(VALIDTESTOBJDIR)/%.widlprocxml, $(VALID_WIDLS)) $(patsubst %.widl, $(INVALIDTESTOBJDIR)/%.txt, $(INVALID_WIDLS)) $(WIDLPROC) 
+        @echo &quot;$@ pass&quot;
+
+#$(EXAMPLESOBJDIR)/%.html : $(EXAMPLESOBJDIR)/%.widlprocxml $(SRCDIR)/widlprocxmltohtml.xsl Makefile
+#        cp $(SRCDIR)/widlprocxmltohtml.xsl $(dir $@)/
+#        xsltproc $(dir $@)/widlprocxmltohtml.xsl $&lt; &gt;$@
+
+
+$(VALIDTESTOBJDIR)/%.widlprocxml : $(VALIDTESTDIR)/%.widl $(WIDLPROC) $(DTD) Makefile $(patsubst %.widl, $(VALIDTESTREFDIR)/%.widlprocxml, $(VALID_WIDLS))
+        mkdir -p $(dir $@)
+        $(WIDLPROC) $&lt; &gt;$@
+        cp $(OBJDIR)/widlprocxml.dtd $(dir $@)/
+        xmllint --noout --dtdvalid $(DTD) $@
+        diff $@ $(VALIDTESTREFDIR)/`basename $@`
+
+$(INVALIDTESTOBJDIR)/%.txt : $(INVALIDTESTDIR)/%.widl $(WIDLPROC) Makefile $(patsubst %.widl, $(INVALIDTESTREFDIR)/%.txt, $(INVALID_WIDLS))
+        mkdir -p $(dir $@)
+        -$(WIDLPROC) $&lt;  &gt;$@ 2&gt;&amp;1
+        diff $@ $(INVALIDTESTREFDIR)/`basename $@`
+
+
+
+.DELETE_ON_ERROR:
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorenumtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/enum.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/enum.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/enum.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/enum.widl: 1: at '1': expected string in enum
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrormoduletxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/module.widl: 2: at 'gfx': expected 'implements'
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrornonnullableanytxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/nonnullableany.widl: 2: at '?': expected identifier
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrornonnullableobjectstxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/nonnullableobjects.widl: 4: at '?': expected identifier
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorscopednametxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/scopedname.widl: 2: at ':': expected identifier
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorsequenceAsAttributetxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/sequenceAsAttribute.widl: 2: at 'sequence': expected type
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorstringconstantsidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+invalid/idl/stringconstants.idl: 2: at 'DOMString': expected acceptable constant type
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvaliderrorw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,24 @@
</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/resources/webidl2/test/widlproc/test/invalid/error/enum.txt
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/module.txt
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableany.txt
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/nonnullableobjects.txt
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/scopedname.txt
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/sequenceAsAttribute.txt
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/error/stringconstants.idl
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlenumwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+enum foo { 1, 2, 3};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlmodulewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+module gfx {
+
+  module geom {
+    interface Shape { /* ... */ };
+    interface Rectangle : Shape { /* ... */ };
+    interface Path : Shape { /* ... */ };
+  };
+
+  interface GraphicsContext {
+    void fillShape(geom::Shape s);
+    void strokeShape(geom::Shape s);
+  };
+};
+
+module gui {
+
+  interface Widget { /* ... */  };
+
+  interface Window : Widget {
+    gfx::GraphicsContext getGraphicsContext();
+  };
+
+  interface Button : Widget { /* ... */  };
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlnonnullableanywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface NonNullable {
+  attribute any? foo;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlnonnullableobjectswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+interface Foo {};
+
+interface NonNullable {
+  attribute Foo?? foo;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlraiseswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+// getraises and setraises are not longer valid Web IDL
+interface Person {
+
+  // An attribute that can raise an exception if it is set to an invalid value.
+  attribute DOMString name setraises (InvalidName);
+
+  // An attribute whose value cannot be assigned to, and which can raise an
+  // exception some circumstances.
+  readonly attribute DOMString petName getraises (NoSuchPet);
+};
+
+exception SomeException {
+};
+
+interface ExceptionThrower {
+  // This attribute always throws a SomeException and never returns a value.
+  attribute long valueOf getraises(SomeException);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlscopednamewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+// scoped names are no longer valid in WebIDL
+  typedef gfx::geom::geom2d::Point Point;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlsequenceAsAttributewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface sequenceAsAttribute {
+  attribute sequence&lt;short&gt; invalid;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlspecialomittablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+// omittable is no longer a recognized keywoard as of 20110905
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  omittable getter float getProperty(DOMString propertyName);
+  omittable setter void setProperty(DOMString propertyName, float propertyValue);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlstringconstantsidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface Util {
+  const DOMString hello = &quot;world&quot;;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestinvalididlw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</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/resources/webidl2/test/widlproc/test/invalid/idl/enum.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/module.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableany.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/nonnullableobjects.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/raises.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/scopedname.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/sequenceAsAttribute.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/special-omittable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/invalid/idl/stringconstants.idl
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlallowanywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface B {
+  void g();
+  void g(B b);
+  void g([AllowAny] DOMString s);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlarraywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor]
+interface LotteryResults {
+  readonly attribute unsigned short[][] numbers;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlattributeswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+exception InvalidName {
+  DOMString reason;
+};
+
+exception NoSuchPet { };
+
+interface Person {
+
+  // A simple attribute that can be set to any value the range an unsigned
+  // short can take.
+  attribute unsigned short age;
+
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlcallbackwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+callback AsyncOperationCallback = void (DOMString status);
+
+callback interface EventHandler {
+  void eventOccurred(DOMString details);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlcallerwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface NumberQuadrupler {
+  // This operation simply returns four times the given number x.
+  legacycaller float compute(float x);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlconstantswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Util {
+  const boolean DEBUG = false;
+  const short negative = -1;
+  const octet LF = 10;
+  const unsigned long BIT_MASK = 0x0000fc00;
+  const float AVOGADRO = 6.022e23;
+  const unrestricted float sobig = Infinity;
+  const unrestricted double minusonedividedbyzero = -Infinity;
+  const short notanumber = NaN;
+};
+
+exception Error {
+  const short ERR_UNKNOWN = 0;
+  const short ERR_OUT_OF_MEMORY = 1;
+
+  short errorCode;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlconstructorwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor,
+ Constructor(float radius)]
+interface Circle {
+  attribute float r;
+  attribute float cx;
+  attribute float cy;
+  readonly attribute float circumference;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldictionaryinheritswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+dictionary PaintOptions {
+  DOMString? fillPattern = &quot;black&quot;;
+  DOMString? strokePattern = null;
+  Point position;
+};
+
+dictionary WetPaintOptions : PaintOptions {
+  float hydrometry;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldictionarywidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+// Extracted from Web IDL editors draft May 31 2011
+dictionary PaintOptions {
+  DOMString? fillPattern = &quot;black&quot;;
+  DOMString? strokePattern = null;
+  Point position;
+};
+
+partial dictionary A {
+  long h;
+  long d;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldocumentationdoswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+/**
+* \brief Testing documentation features
+*
+* This is a
+* single paragraph
+*
+* &lt;p&gt;This is valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;em&gt;valid&lt;/em&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;b&gt;valid&lt;/b&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;a href=''&gt;valid&lt;/a&gt;.&lt;/p&gt;
+* &lt;ul&gt;
+* &lt;li&gt;This&lt;/li&gt;
+* &lt;li&gt;is&lt;/li&gt;
+* &lt;li&gt;valid&lt;/li&gt;
+* &lt;/ul&gt;
+* &lt;dl&gt;
+* &lt;dt&gt;This&lt;/dt&gt;
+* &lt;dd&gt;valid&lt;/dd&gt;
+* &lt;/dl&gt;
+* &lt;table&gt;
+* &lt;tr&gt;
+* &lt;td&gt;this&lt;/td&gt;
+* &lt;td&gt;is&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;tr&gt;
+* &lt;td&gt;valid&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;/table&gt;
+* &lt;p&gt;This is &lt;br&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br /&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br/&gt; valid.&lt;/p&gt;
+*/
+interface Documentation {};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididldocumentationwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/**
+* \brief Testing documentation features
+*
+* This is a
+* single paragraph
+*
+* &lt;p&gt;This is valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;em&gt;valid&lt;/em&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;b&gt;valid&lt;/b&gt;.&lt;/p&gt;
+* &lt;p&gt;This is &lt;a href=''&gt;valid&lt;/a&gt;.&lt;/p&gt;
+* &lt;ul&gt;
+* &lt;li&gt;This&lt;/li&gt;
+* &lt;li&gt;is&lt;/li&gt;
+* &lt;li&gt;valid&lt;/li&gt;
+* &lt;/ul&gt;
+* &lt;dl&gt;
+* &lt;dt&gt;This&lt;/dt&gt;
+* &lt;dd&gt;valid&lt;/dd&gt;
+* &lt;/dl&gt;
+* &lt;table&gt;
+* &lt;tr&gt;
+* &lt;td&gt;this&lt;/td&gt;
+* &lt;td&gt;is&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;tr&gt;
+* &lt;td&gt;valid&lt;/td&gt;
+* &lt;/tr&gt;
+* &lt;/table&gt;
+* &lt;p&gt;This is &lt;br&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br /&gt; valid.&lt;/p&gt;
+* &lt;p&gt;This is &lt;br/&gt; valid.&lt;/p&gt;
+* &lt;p&gt;&lt;img src=&quot;foo.png&quot; alt=&quot;Valid&quot;/&gt;&lt;/p&gt;
+*/
+interface Documentation {};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlenumwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+enum MealType { &quot;rice&quot;, &quot;noodles&quot;, &quot;other&quot; };
+
+interface Meal {
+  attribute MealType type;
+  attribute float size;     // in grams
+
+  void initialize(MealType type, float size);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlequivalentdeclwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float getProperty(DOMString propertyName);
+  setter void setProperty(DOMString propertyName, float propertyValue);
+};
+
+
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  float getProperty(DOMString propertyName);
+  void setProperty(DOMString propertyName, float propertyValue);
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlexceptioninheritancewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// from http://lists.w3.org/Archives/Public/public-script-coord/2010OctDec/0112.html
+  exception DOMException {
+    unsigned short code;
+  };
+
+  exception HierarchyRequestError : DOMException { };
+  exception NoModificationAllowedError : DOMException { };
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlexceptionwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dahut {
+  attribute DOMString type;
+};
+
+exception SomeException {
+};
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlgettersetterwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlidentifierqualifiednameswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+  // Typedef identifier: &quot;number&quot;
+  // Qualified name:    &quot;::framework::number&quot;
+  typedef float number;
+
+  // Exception identifier: &quot;FrameworkException&quot;
+  // Qualified name:       &quot;::framework::FrameworkException&quot;
+  exception FrameworkException {
+
+    // Constant identifier: &quot;ERR_NOT_FOUND&quot;
+    // Qualified name:      &quot;::framework::FrameworkException::ERR_NOT_FOUND&quot;
+    const long ERR_NOT_FOUND = 1;
+
+    // Exception field identifier: &quot;code&quot;
+    long code;
+  };
+
+  // Interface identifier: &quot;System&quot;
+  // Qualified name:       &quot;::framework::System&quot;
+  interface System {
+
+    // Operation identifier:          &quot;createObject&quot;
+    // Operation argument identifier: &quot;interface&quot;
+    object createObject(DOMString _interface);
+
+    // Operation has no identifier; it declares a getter.
+    getter DOMString (DOMString keyName);
+  };
+
+    
+    // Interface identifier: &quot;TextField&quot;
+    // Qualified name:       &quot;::framework::gui::TextField&quot;
+    interface TextField {
+
+      // Attribute identifier: &quot;const&quot;
+      attribute boolean _const;
+
+      // Attribute identifier: &quot;value&quot;
+      attribute DOMString? _value;
+    };
+
+interface Foo {
+ void op(object interface);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlimplementswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+  interface Node {
+    readonly attribute unsigned short nodeType;
+    // ...
+  };
+
+  interface EventTarget {
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          boolean useCapture);
+    // ...
+  };
+
+  Node implements EventTarget;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlindexedpropertieswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface OrderedMap {
+  readonly attribute unsigned long size;
+
+  getter any getByIndex(unsigned long index);
+  setter void setByIndex(unsigned long index, any value);
+  deleter void removeByIndex(unsigned long index);
+
+  getter any get(DOMString name);
+  setter creator void set(DOMString name, any value);
+  deleter void remove(DOMString name);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlinheritsgetterwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+interface Animal {
+
+  // A simple attribute that can be set to any string value.
+  readonly attribute DOMString name;
+};
+
+interface Person : Animal {
+
+  // An attribute whose value cannot be assigned to.
+  readonly attribute unsigned short age;
+
+  // An attribute that can raise an exception if it is set to an invalid value.
+  // Its getter behavior is inherited from Animal, and need not be specified
+  // the description of Person.
+  inherit attribute DOMString name;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlinterfaceinheritswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Animal {
+  attribute DOMString name;
+};
+
+interface Human : Animal {
+  attribute Dog pet;
+};
+
+interface Dog : Animal {
+  attribute Human owner;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididliteratorwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+interface SessionManager {
+  Session getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  Session iterator;
+};
+
+interface Session {
+  readonly attribute DOMString username;
+  // ...
+};
+
+interface SessionManager2 {
+  Session2 getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  Session2 iterator = SessionIterator;
+};
+
+interface Session2 {
+  readonly attribute DOMString username;
+  // ...
+};
+
+interface SessionIterator {
+  readonly attribute unsigned long remainingSessions;
+};
+
+     interface NodeList {
+       Node iterator = NodeIterator;
+     };
+
+     interface NodeIterator {
+       Node iterator object;
+     };
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnamedconstructorwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[NamedConstructor=Audio,
+ NamedConstructor=Audio(DOMString src)]
+interface HTMLAudioElement : HTMLMediaElement {
+  // ...
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnointerfaceobjectwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[NoInterfaceObject]
+interface Query {
+  any lookupEntry(unsigned long key);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnullablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface MyConstants {
+  const boolean? ARE_WE_THERE_YET = false;
+};
+
+interface Node {
+  readonly attribute DOMString? namespaceURI;
+  // ...
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlnullableobjectswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+// Extracted from WebIDL spec 2011-05-23
+
+interface A {
+  // ...
+};
+interface B {
+  // ...
+};
+interface C {
+  void f(A? x);
+  void f(B? x);
+
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididloperationoptionalargwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface ColorCreator {
+  object createColor(float v1, float v2, float v3, optional float alpha = 3.5);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididloverloadingwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface A {
+  // ...
+};
+
+interface B {
+  // ...
+};
+
+interface C {
+  void f(A x);
+  void f(B x);
+};
+
+interface A {
+  /* f1 */ void f(DOMString a);
+  /* f2 */ void f([AllowAny] DOMString a, DOMString b, float... c);
+  /* f3 */ void f();
+  /* f4 */ void f(long a, DOMString b, optional DOMString c, float... d);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididloverridebuiltinswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[OverrideBuiltins]
+interface StringMap2 {
+  readonly attribute unsigned long length;
+  getter DOMString lookup(DOMString key);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlpartialinterfacewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+interface Foo {
+  attribute DOMString bar;
+};
+
+partial interface Foo {
+  attribute DOMString quux;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlprimitiveswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+interface Primitives {
+  attribute boolean truth;
+  attribute byte character;
+  attribute octet value;
+  attribute short number;
+  attribute unsigned short positive;
+  attribute long big;
+  attribute unsigned long bigpositive;
+  attribute long long bigbig;
+  attribute  unsigned long long bigbigpositive;
+  attribute float real;
+  attribute double bigreal; 
+  attribute unrestricted float realwithinfinity;
+  attribute unrestricted double bigrealwithinfinity; 
+  attribute DOMString string; 
+  attribute ByteString bytes; 
+  attribute Date date;
+  attribute RegExp regexp;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlprototyperootwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[PrototypeRoot]
+interface Node {
+  readonly attribute unsigned short nodeType;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlputforwardswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Person {
+  [PutForwards=full] readonly attribute Name name;
+  attribute unsigned short age;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlregoperationswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dimensions {
+  attribute unsigned long width;
+  attribute unsigned long height;
+};
+
+exception NoPointerDevice { };
+
+interface Button {
+
+  // An operation that takes no arguments, returns a boolean
+  boolean isMouseOver();
+
+  // Overloaded operations.
+  void setDimensions(Dimensions size);
+  void setDimensions(unsigned long width, unsigned long height);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlreplaceablewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Counter {
+  [Replaceable] readonly attribute unsigned long value;
+  void increment();
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlsequencewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+// edited to remove sequence as attributes, now invalid
+interface Canvas {
+  void drawPolygon(sequence&lt;float&gt; coordinates);
+  sequence&lt;float&gt; getInflectionPoints();
+  // ...
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlserializerwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+interface Transaction {
+  readonly attribute Account from;
+  readonly attribute Account to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer;
+};
+
+interface Account {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer DOMString serialize();
+};
+
+interface Transaction2 {
+  readonly attribute Account2 from;
+  readonly attribute Account2 to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer = { from, to, amount, description };
+};
+
+interface Account2 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = number;
+};
+
+interface Account3 {
+  attribute DOMString name;
+  attribute unsigned long number;
+
+  serializer = { attribute };
+};
+
+interface Account4 {
+  getter object getItem(unsigned long index);
+  serializer = { getter };
+};
+
+interface Account5 : Account {
+  attribute DOMString secondname;
+  serializer = { inherit, secondname };
+};
+
+interface Account6 : Account {
+  attribute DOMString secondname;
+  serializer = { inherit, attribute };
+};
+
+interface Account7 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = [ name, number ];
+};
+
+interface Account8 {
+  getter object getItem(unsigned long index);
+  serializer = [ getter ];
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstaticwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Point { /* ... */ };
+
+interface Circle {
+  attribute float cx;
+  attribute float cy;
+  attribute float radius;
+
+  static readonly attribute long triangulationCount;
+  static Point triangulate(Circle c1, Circle c2, Circle c3);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstringifierattributewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor]
+interface Student {
+  attribute unsigned long id;
+  stringifier attribute DOMString name;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstringifiercustomwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+[Constructor]
+interface Student {
+  attribute unsigned long id;
+  attribute DOMString? familyName;
+  attribute DOMString givenName;
+
+  stringifier DOMString ();
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlstringifierwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface A {
+  stringifier DOMString ();
+};
+
+interface A {
+  stringifier;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltreatasnullwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Dog {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatNullAs=EmptyString] DOMString breedName);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltreatasundefinedwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface Cat {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatUndefinedAs=EmptyString] DOMString breedName);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltypedefwidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+      interface Point {
+        attribute float x;
+        attribute float y;
+      };
+
+      typedef sequence&lt;Point&gt; PointSequence;
+
+      interface Rect {
+        attribute Point topleft;
+        attribute Point bottomright;
+      };
+
+  interface Widget {
+
+    readonly attribute Rect bounds;
+
+    boolean pointWithinBounds(Point p);
+    boolean allPointsWithinBounds(PointSequence ps);
+  };
+
+  typedef [Clamp] octet value;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididltypesuffixeswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface Suffixes {
+  void test(sequence&lt;DOMString[]?&gt;? foo);
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididluniontypewidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+interface Union {
+ attribute (float or (Date or Event) or (Node or DOMString)?) test;
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlvariadicoperationswidl"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+// Extracted from http://dev.w3.org/2006/webapi/WebIDL/ on 2011-05-06
+interface IntegerSet {
+  readonly attribute unsigned long cardinality;
+
+  void union(long... ints);
+  void intersection(long... ints);
+};
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalididlw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,64 @@
</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/resources/webidl2/test/widlproc/test/valid/idl/allowany.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/array.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/attributes.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/callback.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/caller.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constants.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/constructor.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary-inherits.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/dictionary.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation-dos.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/documentation.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/enum.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/equivalent-decl.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception-inheritance.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/exception.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/getter-setter.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/identifier-qualified-names.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/implements.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/indexed-properties.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/inherits-getter.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/interface-inherits.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/iterator.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/namedconstructor.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nointerfaceobject.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/nullableobjects.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/operation-optional-arg.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overloading.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/overridebuiltins.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/partial-interface.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/primitives.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/prototyperoot.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/putforwards.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/reg-operations.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/replaceable.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/sequence.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/serializer.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/static.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-attribute.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier-custom.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/stringifier.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasnull.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/treatasundefined.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typedef.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/typesuffixes.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/uniontype.widl
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/idl/variadic-operations.widl
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlallowanywidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface B {
+  void g();
+  void g(&lt;ref&gt;B&lt;/ref&gt; b);
+  void g([AllowAny] DOMString s);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;B&quot; id=&quot;::B&quot;&gt;
+    &lt;webidl&gt;interface B {
+  void g();
+  void g(&lt;ref&gt;B&lt;/ref&gt; b);
+  void g([AllowAny] DOMString s);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;g&quot; id=&quot;::B::g&quot;&gt;
+      &lt;webidl&gt;  void g();&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;g&quot; id=&quot;::B::g&quot;&gt;
+      &lt;webidl&gt;  void g(&lt;ref&gt;B&lt;/ref&gt; b);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;b&quot;&gt;
+          &lt;Type name=&quot;B&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;g&quot; id=&quot;::B::g&quot;&gt;
+      &lt;webidl&gt;  void g([AllowAny] DOMString s);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;s&quot;&gt;
+          &lt;ExtendedAttributeList&gt;
+            &lt;ExtendedAttribute name=&quot;AllowAny&quot;&gt;
+              &lt;webidl&gt;AllowAny&lt;/webidl&gt;
+            &lt;/ExtendedAttribute&gt;
+          &lt;/ExtendedAttributeList&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlarraywidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[Constructor]
+interface LotteryResults {
+  readonly attribute unsigned short[][] numbers;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;LotteryResults&quot; id=&quot;::LotteryResults&quot;&gt;
+    &lt;webidl&gt;[Constructor]
+interface LotteryResults {
+  readonly attribute unsigned short[][] numbers;
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;Constructor&quot;&gt;
+        &lt;webidl&gt;Constructor&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;numbers&quot; id=&quot;::LotteryResults::numbers&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned short[][] numbers;&lt;/webidl&gt;
+      &lt;Type type=&quot;array&quot;&gt;
+        &lt;Type type=&quot;array&quot;&gt;
+          &lt;Type type=&quot;unsigned short&quot;/&gt;
+        &lt;/Type&gt;
+      &lt;/Type&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlattributeswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;exception InvalidName {
+  DOMString reason;
+};
+
+exception NoSuchPet { };
+
+interface Person {
+
+  attribute unsigned short age;
+
+};&lt;/webidl&gt;
+  &lt;Exception name=&quot;InvalidName&quot; id=&quot;::InvalidName&quot;&gt;
+    &lt;webidl&gt;exception InvalidName {
+  DOMString reason;
+};&lt;/webidl&gt;
+    &lt;ExceptionField name=&quot;reason&quot; id=&quot;::InvalidName::reason&quot;&gt;
+      &lt;webidl&gt;  DOMString reason;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/ExceptionField&gt;
+  &lt;/Exception&gt;
+  &lt;Exception name=&quot;NoSuchPet&quot; id=&quot;::NoSuchPet&quot;&gt;
+    &lt;webidl&gt;exception NoSuchPet { };&lt;/webidl&gt;
+  &lt;/Exception&gt;
+  &lt;Interface name=&quot;Person&quot; id=&quot;::Person&quot;&gt;
+    &lt;webidl&gt;interface Person {
+
+  attribute unsigned short age;
+
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;age&quot; id=&quot;::Person::age&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned short age;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlcallbackwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;callback AsyncOperationCallback = void (DOMString status);
+
+callback interface EventHandler {
+  void eventOccurred(DOMString details);
+};&lt;/webidl&gt;
+  &lt;Callback name=&quot;AsyncOperationCallback&quot; id=&quot;::AsyncOperationCallback&quot;&gt;
+    &lt;webidl&gt;callback AsyncOperationCallback = void (DOMString status);&lt;/webidl&gt;
+    &lt;Type type=&quot;void&quot;/&gt;
+    &lt;ArgumentList&gt;
+      &lt;Argument name=&quot;status&quot;&gt;
+        &lt;Type type=&quot;DOMString&quot;/&gt;
+      &lt;/Argument&gt;
+    &lt;/ArgumentList&gt;
+  &lt;/Callback&gt;
+  &lt;Interface name=&quot;EventHandler&quot; callback=&quot;callback&quot; id=&quot;::EventHandler&quot;&gt;
+    &lt;webidl&gt;callback interface EventHandler {
+  void eventOccurred(DOMString details);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;eventOccurred&quot; id=&quot;::EventHandler::eventOccurred&quot;&gt;
+      &lt;webidl&gt;  void eventOccurred(DOMString details);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;details&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlcallerwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface NumberQuadrupler {
+  legacycaller float compute(float x);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;NumberQuadrupler&quot; id=&quot;::NumberQuadrupler&quot;&gt;
+    &lt;webidl&gt;interface NumberQuadrupler {
+  legacycaller float compute(float x);
+};&lt;/webidl&gt;
+    &lt;Operation legacycaller=&quot;legacycaller&quot; name=&quot;compute&quot; id=&quot;::NumberQuadrupler::compute&quot;&gt;
+      &lt;webidl&gt;  legacycaller float compute(float x);&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;x&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlconstantswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Util {
+  const boolean DEBUG = false;
+  const short negative = -1;
+  const octet LF = 10;
+  const unsigned long BIT_MASK = 0x0000fc00;
+  const float AVOGADRO = 6.022e23;
+  const unrestricted float sobig = Infinity;
+  const unrestricted double minusonedividedbyzero = -Infinity;
+  const short notanumber = NaN;
+};
+
+exception Error {
+  const short ERR_UNKNOWN = 0;
+  const short ERR_OUT_OF_MEMORY = 1;
+
+  short errorCode;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Util&quot; id=&quot;::Util&quot;&gt;
+    &lt;webidl&gt;interface Util {
+  const boolean DEBUG = false;
+  const short negative = -1;
+  const octet LF = 10;
+  const unsigned long BIT_MASK = 0x0000fc00;
+  const float AVOGADRO = 6.022e23;
+  const unrestricted float sobig = Infinity;
+  const unrestricted double minusonedividedbyzero = -Infinity;
+  const short notanumber = NaN;
+};&lt;/webidl&gt;
+    &lt;Const name=&quot;DEBUG&quot; value=&quot;false&quot; id=&quot;::Util::DEBUG&quot;&gt;
+      &lt;webidl&gt;  const boolean DEBUG = false;&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;negative&quot; value=&quot;-1&quot; id=&quot;::Util::negative&quot;&gt;
+      &lt;webidl&gt;  const short negative = -1;&lt;/webidl&gt;
+      &lt;Type type=&quot;short&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;LF&quot; value=&quot;10&quot; id=&quot;::Util::LF&quot;&gt;
+      &lt;webidl&gt;  const octet LF = 10;&lt;/webidl&gt;
+      &lt;Type type=&quot;octet&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;BIT_MASK&quot; value=&quot;0x0000fc00&quot; id=&quot;::Util::BIT_MASK&quot;&gt;
+      &lt;webidl&gt;  const unsigned long BIT_MASK = 0x0000fc00;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;AVOGADRO&quot; value=&quot;6.022e23&quot; id=&quot;::Util::AVOGADRO&quot;&gt;
+      &lt;webidl&gt;  const float AVOGADRO = 6.022e23;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;sobig&quot; value=&quot;Infinity&quot; id=&quot;::Util::sobig&quot;&gt;
+      &lt;webidl&gt;  const unrestricted float sobig = Infinity;&lt;/webidl&gt;
+      &lt;Type type=&quot;unrestricted float&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;minusonedividedbyzero&quot; value=&quot;-Infinity&quot; id=&quot;::Util::minusonedividedbyzero&quot;&gt;
+      &lt;webidl&gt;  const unrestricted double minusonedividedbyzero = -Infinity;&lt;/webidl&gt;
+      &lt;Type type=&quot;unrestricted double&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;notanumber&quot; value=&quot;NaN&quot; id=&quot;::Util::notanumber&quot;&gt;
+      &lt;webidl&gt;  const short notanumber = NaN;&lt;/webidl&gt;
+      &lt;Type type=&quot;short&quot;/&gt;
+    &lt;/Const&gt;
+  &lt;/Interface&gt;
+  &lt;Exception name=&quot;Error&quot; id=&quot;::Error&quot;&gt;
+    &lt;webidl&gt;exception Error {
+  const short ERR_UNKNOWN = 0;
+  const short ERR_OUT_OF_MEMORY = 1;
+
+  short errorCode;
+};&lt;/webidl&gt;
+    &lt;Const name=&quot;ERR_UNKNOWN&quot; value=&quot;0&quot; id=&quot;::Error::ERR_UNKNOWN&quot;&gt;
+      &lt;webidl&gt;  const short ERR_UNKNOWN = 0;&lt;/webidl&gt;
+      &lt;Type type=&quot;short&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;Const name=&quot;ERR_OUT_OF_MEMORY&quot; value=&quot;1&quot; id=&quot;::Error::ERR_OUT_OF_MEMORY&quot;&gt;
+      &lt;webidl&gt;  const short ERR_OUT_OF_MEMORY = 1;&lt;/webidl&gt;
+      &lt;Type type=&quot;short&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;ExceptionField name=&quot;errorCode&quot; id=&quot;::Error::errorCode&quot;&gt;
+      &lt;webidl&gt;  short errorCode;&lt;/webidl&gt;
+      &lt;Type type=&quot;short&quot;/&gt;
+    &lt;/ExceptionField&gt;
+  &lt;/Exception&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlconstructorwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[Constructor,
+ Constructor(float radius)]
+interface Circle {
+  attribute float r;
+  attribute float cx;
+  attribute float cy;
+  readonly attribute float circumference;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Circle&quot; id=&quot;::Circle&quot;&gt;
+    &lt;webidl&gt;[Constructor,
+ Constructor(float radius)]
+interface Circle {
+  attribute float r;
+  attribute float cx;
+  attribute float cy;
+  readonly attribute float circumference;
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;Constructor&quot;&gt;
+        &lt;webidl&gt;Constructor&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+      &lt;ExtendedAttribute name=&quot;Constructor&quot;&gt;
+        &lt;webidl&gt; Constructor(float radius)&lt;/webidl&gt;
+        &lt;ArgumentList&gt;
+          &lt;Argument name=&quot;radius&quot;&gt;
+            &lt;Type type=&quot;float&quot;/&gt;
+          &lt;/Argument&gt;
+        &lt;/ArgumentList&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Attribute name=&quot;r&quot; id=&quot;::Circle::r&quot;&gt;
+      &lt;webidl&gt;  attribute float r;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;cx&quot; id=&quot;::Circle::cx&quot;&gt;
+      &lt;webidl&gt;  attribute float cx;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;cy&quot; id=&quot;::Circle::cy&quot;&gt;
+      &lt;webidl&gt;  attribute float cy;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;circumference&quot; id=&quot;::Circle::circumference&quot;&gt;
+      &lt;webidl&gt;  readonly attribute float circumference;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldictionaryinheritswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;dictionary PaintOptions {
+  DOMString? fillPattern = &amp;quot;black&amp;quot;;
+  DOMString? strokePattern = null;
+  &lt;ref&gt;Point&lt;/ref&gt; position;
+};
+
+dictionary WetPaintOptions : &lt;ref&gt;PaintOptions&lt;/ref&gt; {
+  float hydrometry;
+};&lt;/webidl&gt;
+  &lt;Dictionary name=&quot;PaintOptions&quot; id=&quot;::PaintOptions&quot;&gt;
+    &lt;webidl&gt;dictionary PaintOptions {
+  DOMString? fillPattern = &amp;quot;black&amp;quot;;
+  DOMString? strokePattern = null;
+  &lt;ref&gt;Point&lt;/ref&gt; position;
+};&lt;/webidl&gt;
+    &lt;DictionaryMember name=&quot;fillPattern&quot; stringvalue=&quot;black&quot; id=&quot;::PaintOptions::fillPattern&quot;&gt;
+      &lt;webidl&gt;  DOMString? fillPattern = &amp;quot;black&amp;quot;;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+    &lt;DictionaryMember name=&quot;strokePattern&quot; value=&quot;null&quot; id=&quot;::PaintOptions::strokePattern&quot;&gt;
+      &lt;webidl&gt;  DOMString? strokePattern = null;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+    &lt;DictionaryMember name=&quot;position&quot; id=&quot;::PaintOptions::position&quot;&gt;
+      &lt;webidl&gt;  &lt;ref&gt;Point&lt;/ref&gt; position;&lt;/webidl&gt;
+      &lt;Type name=&quot;Point&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+  &lt;/Dictionary&gt;
+  &lt;Dictionary name=&quot;WetPaintOptions&quot; id=&quot;::WetPaintOptions&quot;&gt;
+    &lt;webidl&gt;dictionary WetPaintOptions : &lt;ref&gt;PaintOptions&lt;/ref&gt; {
+  float hydrometry;
+};&lt;/webidl&gt;
+    &lt;DictionaryInheritance&gt;
+      &lt;Name name=&quot;PaintOptions&quot;/&gt;
+    &lt;/DictionaryInheritance&gt;
+    &lt;DictionaryMember name=&quot;hydrometry&quot; id=&quot;::WetPaintOptions::hydrometry&quot;&gt;
+      &lt;webidl&gt;  float hydrometry;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+  &lt;/Dictionary&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldictionarywidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;dictionary PaintOptions {
+  DOMString? fillPattern = &amp;quot;black&amp;quot;;
+  DOMString? strokePattern = null;
+  &lt;ref&gt;Point&lt;/ref&gt; position;
+};
+
+partial dictionary A {
+  long h;
+  long d;
+};&lt;/webidl&gt;
+  &lt;Dictionary name=&quot;PaintOptions&quot; id=&quot;::PaintOptions&quot;&gt;
+    &lt;webidl&gt;dictionary PaintOptions {
+  DOMString? fillPattern = &amp;quot;black&amp;quot;;
+  DOMString? strokePattern = null;
+  &lt;ref&gt;Point&lt;/ref&gt; position;
+};&lt;/webidl&gt;
+    &lt;DictionaryMember name=&quot;fillPattern&quot; stringvalue=&quot;black&quot; id=&quot;::PaintOptions::fillPattern&quot;&gt;
+      &lt;webidl&gt;  DOMString? fillPattern = &amp;quot;black&amp;quot;;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+    &lt;DictionaryMember name=&quot;strokePattern&quot; value=&quot;null&quot; id=&quot;::PaintOptions::strokePattern&quot;&gt;
+      &lt;webidl&gt;  DOMString? strokePattern = null;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+    &lt;DictionaryMember name=&quot;position&quot; id=&quot;::PaintOptions::position&quot;&gt;
+      &lt;webidl&gt;  &lt;ref&gt;Point&lt;/ref&gt; position;&lt;/webidl&gt;
+      &lt;Type name=&quot;Point&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+  &lt;/Dictionary&gt;
+  &lt;Dictionary name=&quot;A&quot; partial=&quot;partial&quot; id=&quot;::A&quot;&gt;
+    &lt;webidl&gt;partial dictionary A {
+  long h;
+  long d;
+};&lt;/webidl&gt;
+    &lt;DictionaryMember name=&quot;h&quot; id=&quot;::A::h&quot;&gt;
+      &lt;webidl&gt;  long h;&lt;/webidl&gt;
+      &lt;Type type=&quot;long&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+    &lt;DictionaryMember name=&quot;d&quot; id=&quot;::A::d&quot;&gt;
+      &lt;webidl&gt;  long d;&lt;/webidl&gt;
+      &lt;Type type=&quot;long&quot;/&gt;
+    &lt;/DictionaryMember&gt;
+  &lt;/Dictionary&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldocumentationdoswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Documentation {};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Documentation&quot; id=&quot;::Documentation&quot;&gt;
+    &lt;webidl&gt;interface Documentation {};&lt;/webidl&gt;
+    &lt;descriptive&gt;
+        &lt;brief&gt;
+ Testing documentation features
+        &lt;/brief&gt;
+       &lt;description&gt;
+        &lt;p&gt;
+This is a
+single paragraph
+        &lt;/p&gt;
+        &lt;p&gt;
+This is valid.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;em&gt;valid&lt;/em&gt;.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;b&gt;valid&lt;/b&gt;.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;a href=''&gt;valid&lt;/a&gt;.        &lt;/p&gt;
+        &lt;ul&gt;
+          &lt;li&gt;
+This          &lt;/li&gt;
+          &lt;li&gt;
+is          &lt;/li&gt;
+          &lt;li&gt;
+valid          &lt;/li&gt;
+        &lt;/ul&gt;
+        &lt;dl&gt;
+          &lt;dt&gt;
+This          &lt;/dt&gt;
+          &lt;dd&gt;
+valid          &lt;/dd&gt;
+        &lt;/dl&gt;
+        &lt;table&gt;
+          &lt;tr&gt;
+            &lt;td&gt;
+this            &lt;/td&gt;
+            &lt;td&gt;
+is            &lt;/td&gt;
+          &lt;/tr&gt;
+          &lt;tr&gt;
+            &lt;td&gt;
+valid            &lt;/td&gt;
+          &lt;/tr&gt;
+        &lt;/table&gt;
+        &lt;p&gt;
+This is &lt;br/&gt; valid.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;br /&gt; valid.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;br/&gt; valid.        &lt;/p&gt;
+       &lt;/description&gt;
+    &lt;/descriptive&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmldocumentationwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Documentation {};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Documentation&quot; id=&quot;::Documentation&quot;&gt;
+    &lt;webidl&gt;interface Documentation {};&lt;/webidl&gt;
+    &lt;descriptive&gt;
+        &lt;brief&gt;
+ Testing documentation features
+        &lt;/brief&gt;
+       &lt;description&gt;
+        &lt;p&gt;
+This is a
+single paragraph
+        &lt;/p&gt;
+        &lt;p&gt;
+This is valid.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;em&gt;valid&lt;/em&gt;.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;b&gt;valid&lt;/b&gt;.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;a href=''&gt;valid&lt;/a&gt;.        &lt;/p&gt;
+        &lt;ul&gt;
+          &lt;li&gt;
+This          &lt;/li&gt;
+          &lt;li&gt;
+is          &lt;/li&gt;
+          &lt;li&gt;
+valid          &lt;/li&gt;
+        &lt;/ul&gt;
+        &lt;dl&gt;
+          &lt;dt&gt;
+This          &lt;/dt&gt;
+          &lt;dd&gt;
+valid          &lt;/dd&gt;
+        &lt;/dl&gt;
+        &lt;table&gt;
+          &lt;tr&gt;
+            &lt;td&gt;
+this            &lt;/td&gt;
+            &lt;td&gt;
+is            &lt;/td&gt;
+          &lt;/tr&gt;
+          &lt;tr&gt;
+            &lt;td&gt;
+valid            &lt;/td&gt;
+          &lt;/tr&gt;
+        &lt;/table&gt;
+        &lt;p&gt;
+This is &lt;br/&gt; valid.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;br /&gt; valid.        &lt;/p&gt;
+        &lt;p&gt;
+This is &lt;br/&gt; valid.        &lt;/p&gt;
+        &lt;p&gt;
+&lt;img src=&quot;foo.png&quot; alt=&quot;Valid&quot;/&gt;        &lt;/p&gt;
+       &lt;/description&gt;
+    &lt;/descriptive&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlenumwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;enum MealType { &amp;quot;rice&amp;quot;, &amp;quot;noodles&amp;quot;, &amp;quot;other&amp;quot; };
+
+interface Meal {
+  attribute &lt;ref&gt;MealType&lt;/ref&gt; type;
+  attribute float size;     
+
+  void initialize(&lt;ref&gt;MealType&lt;/ref&gt; type, float size);
+};&lt;/webidl&gt;
+  &lt;Enum name=&quot;MealType&quot; id=&quot;::MealType&quot;&gt;
+    &lt;webidl&gt;enum MealType { &amp;quot;rice&amp;quot;, &amp;quot;noodles&amp;quot;, &amp;quot;other&amp;quot; };&lt;/webidl&gt;
+    &lt;EnumValue stringvalue=&quot;rice&quot;&gt;
+      &lt;webidl&gt; &amp;quot;rice&lt;/webidl&gt;
+    &lt;/EnumValue&gt;
+    &lt;EnumValue stringvalue=&quot;noodles&quot;&gt;
+      &lt;webidl&gt; &amp;quot;noodles&lt;/webidl&gt;
+    &lt;/EnumValue&gt;
+    &lt;EnumValue stringvalue=&quot;other&quot;&gt;
+      &lt;webidl&gt; &amp;quot;other&lt;/webidl&gt;
+    &lt;/EnumValue&gt;
+  &lt;/Enum&gt;
+  &lt;Interface name=&quot;Meal&quot; id=&quot;::Meal&quot;&gt;
+    &lt;webidl&gt;interface Meal {
+  attribute &lt;ref&gt;MealType&lt;/ref&gt; type;
+  attribute float size;     
+
+  void initialize(&lt;ref&gt;MealType&lt;/ref&gt; type, float size);
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;type&quot; id=&quot;::Meal::type&quot;&gt;
+      &lt;webidl&gt;  attribute &lt;ref&gt;MealType&lt;/ref&gt; type;&lt;/webidl&gt;
+      &lt;Type name=&quot;MealType&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;size&quot; id=&quot;::Meal::size&quot;&gt;
+      &lt;webidl&gt;  attribute float size;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;initialize&quot; id=&quot;::Meal::initialize&quot;&gt;
+      &lt;webidl&gt;  void initialize(&lt;ref&gt;MealType&lt;/ref&gt; type, float size);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;type&quot;&gt;
+          &lt;Type name=&quot;MealType&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;size&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlequivalentdeclwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,111 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float getProperty(DOMString propertyName);
+  setter void setProperty(DOMString propertyName, float propertyValue);
+};
+
+
+interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  float getProperty(DOMString propertyName);
+  void setProperty(DOMString propertyName, float propertyValue);
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Dictionary&quot; id=&quot;::Dictionary&quot;&gt;
+    &lt;webidl&gt;interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float getProperty(DOMString propertyName);
+  setter void setProperty(DOMString propertyName, float propertyValue);
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;propertyCount&quot; id=&quot;::Dictionary::propertyCount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long propertyCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation getter=&quot;getter&quot; name=&quot;getProperty&quot; id=&quot;::Dictionary::getProperty&quot;&gt;
+      &lt;webidl&gt;  getter float getProperty(DOMString propertyName);&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation setter=&quot;setter&quot; name=&quot;setProperty&quot; id=&quot;::Dictionary::setProperty&quot;&gt;
+      &lt;webidl&gt;  setter void setProperty(DOMString propertyName, float propertyValue);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;propertyValue&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Dictionary&quot; id=&quot;::Dictionary&quot;&gt;
+    &lt;webidl&gt;interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  float getProperty(DOMString propertyName);
+  void setProperty(DOMString propertyName, float propertyValue);
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;propertyCount&quot; id=&quot;::Dictionary::propertyCount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long propertyCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;getProperty&quot; id=&quot;::Dictionary::getProperty&quot;&gt;
+      &lt;webidl&gt;  float getProperty(DOMString propertyName);&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;setProperty&quot; id=&quot;::Dictionary::setProperty&quot;&gt;
+      &lt;webidl&gt;  void setProperty(DOMString propertyName, float propertyValue);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;propertyValue&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation getter=&quot;getter&quot;&gt;
+      &lt;webidl&gt;  getter float (DOMString propertyName);&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation setter=&quot;setter&quot;&gt;
+      &lt;webidl&gt;  setter void (DOMString propertyName, float propertyValue);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;propertyValue&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlexceptioninheritancewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;  exception DOMException {
+    unsigned short code;
+  };
+
+  exception HierarchyRequestError : &lt;ref&gt;DOMException&lt;/ref&gt; { };
+  exception NoModificationAllowedError : &lt;ref&gt;DOMException&lt;/ref&gt; { };&lt;/webidl&gt;
+  &lt;Exception name=&quot;DOMException&quot; id=&quot;::DOMException&quot;&gt;
+    &lt;webidl&gt;  exception DOMException {
+    unsigned short code;
+  };&lt;/webidl&gt;
+    &lt;ExceptionField name=&quot;code&quot; id=&quot;::DOMException::code&quot;&gt;
+      &lt;webidl&gt;    unsigned short code;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/ExceptionField&gt;
+  &lt;/Exception&gt;
+  &lt;Exception name=&quot;HierarchyRequestError&quot; id=&quot;::HierarchyRequestError&quot;&gt;
+    &lt;webidl&gt;  exception HierarchyRequestError : &lt;ref&gt;DOMException&lt;/ref&gt; { };&lt;/webidl&gt;
+    &lt;ExceptionInheritance&gt;
+      &lt;Name name=&quot;DOMException&quot;/&gt;
+    &lt;/ExceptionInheritance&gt;
+  &lt;/Exception&gt;
+  &lt;Exception name=&quot;NoModificationAllowedError&quot; id=&quot;::NoModificationAllowedError&quot;&gt;
+    &lt;webidl&gt;  exception NoModificationAllowedError : &lt;ref&gt;DOMException&lt;/ref&gt; { };&lt;/webidl&gt;
+    &lt;ExceptionInheritance&gt;
+      &lt;Name name=&quot;DOMException&quot;/&gt;
+    &lt;/ExceptionInheritance&gt;
+  &lt;/Exception&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlexceptionwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Dahut {
+  attribute DOMString type;
+};
+
+exception SomeException {
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Dahut&quot; id=&quot;::Dahut&quot;&gt;
+    &lt;webidl&gt;interface Dahut {
+  attribute DOMString type;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;type&quot; id=&quot;::Dahut::type&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString type;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Exception name=&quot;SomeException&quot; id=&quot;::SomeException&quot;&gt;
+    &lt;webidl&gt;exception SomeException {
+};&lt;/webidl&gt;
+  &lt;/Exception&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlgettersetterwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/getter-setter.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/getter-setter.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/getter-setter.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Dictionary&quot; id=&quot;::Dictionary&quot;&gt;
+    &lt;webidl&gt;interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  getter float (DOMString propertyName);
+  setter void (DOMString propertyName, float propertyValue);
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;propertyCount&quot; id=&quot;::Dictionary::propertyCount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long propertyCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation getter=&quot;getter&quot;&gt;
+      &lt;webidl&gt;  getter float (DOMString propertyName);&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation setter=&quot;setter&quot;&gt;
+      &lt;webidl&gt;  setter void (DOMString propertyName, float propertyValue);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;propertyValue&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlidentifierqualifiednameswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,107 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;  typedef float number;
+
+  exception FrameworkException {
+
+    const long ERR_NOT_FOUND = 1;
+
+    long code;
+  };
+
+  interface System {
+
+    object createObject(DOMString _interface);
+
+    getter DOMString (DOMString keyName);
+  };
+
+    
+    interface TextField {
+
+      attribute boolean _const;
+
+      attribute DOMString? _value;
+    };
+
+interface Foo {
+ void op(object interface);
+};&lt;/webidl&gt;
+  &lt;Typedef name=&quot;number&quot; id=&quot;::number&quot;&gt;
+    &lt;webidl&gt;  typedef float number;&lt;/webidl&gt;
+    &lt;Type type=&quot;float&quot;/&gt;
+  &lt;/Typedef&gt;
+  &lt;Exception name=&quot;FrameworkException&quot; id=&quot;::FrameworkException&quot;&gt;
+    &lt;webidl&gt;  exception FrameworkException {
+
+    const long ERR_NOT_FOUND = 1;
+
+    long code;
+  };&lt;/webidl&gt;
+    &lt;Const name=&quot;ERR_NOT_FOUND&quot; value=&quot;1&quot; id=&quot;::FrameworkException::ERR_NOT_FOUND&quot;&gt;
+      &lt;webidl&gt;    const long ERR_NOT_FOUND = 1;&lt;/webidl&gt;
+      &lt;Type type=&quot;long&quot;/&gt;
+    &lt;/Const&gt;
+    &lt;ExceptionField name=&quot;code&quot; id=&quot;::FrameworkException::code&quot;&gt;
+      &lt;webidl&gt;    long code;&lt;/webidl&gt;
+      &lt;Type type=&quot;long&quot;/&gt;
+    &lt;/ExceptionField&gt;
+  &lt;/Exception&gt;
+  &lt;Interface name=&quot;System&quot; id=&quot;::System&quot;&gt;
+    &lt;webidl&gt;  interface System {
+
+    object createObject(DOMString _interface);
+
+    getter DOMString (DOMString keyName);
+  };&lt;/webidl&gt;
+    &lt;Operation name=&quot;createObject&quot; id=&quot;::System::createObject&quot;&gt;
+      &lt;webidl&gt;    object createObject(DOMString _interface);&lt;/webidl&gt;
+      &lt;Type type=&quot;object&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;_interface&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation getter=&quot;getter&quot;&gt;
+      &lt;webidl&gt;    getter DOMString (DOMString keyName);&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;keyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;TextField&quot; id=&quot;::TextField&quot;&gt;
+    &lt;webidl&gt;    interface TextField {
+
+      attribute boolean _const;
+
+      attribute DOMString? _value;
+    };&lt;/webidl&gt;
+    &lt;Attribute name=&quot;_const&quot; id=&quot;::TextField::_const&quot;&gt;
+      &lt;webidl&gt;      attribute boolean _const;&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;_value&quot; id=&quot;::TextField::_value&quot;&gt;
+      &lt;webidl&gt;      attribute DOMString? _value;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Foo&quot; id=&quot;::Foo&quot;&gt;
+    &lt;webidl&gt;interface Foo {
+ void op(object interface);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;op&quot; id=&quot;::Foo::op&quot;&gt;
+      &lt;webidl&gt; void op(object interface);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;interface&quot;&gt;
+          &lt;Type type=&quot;object&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlimplementswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;  interface Node {
+    readonly attribute unsigned short nodeType;
+  };
+
+  interface EventTarget {
+    void addEventListener(DOMString type,
+                          &lt;ref&gt;EventListener&lt;/ref&gt; listener,
+                          boolean useCapture);
+  };
+
+  &lt;ref&gt;Node&lt;/ref&gt; implements &lt;ref&gt;EventTarget&lt;/ref&gt;;&lt;/webidl&gt;
+  &lt;Interface name=&quot;Node&quot; id=&quot;::Node&quot;&gt;
+    &lt;webidl&gt;  interface Node {
+    readonly attribute unsigned short nodeType;
+  };&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;nodeType&quot; id=&quot;::Node::nodeType&quot;&gt;
+      &lt;webidl&gt;    readonly attribute unsigned short nodeType;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;EventTarget&quot; id=&quot;::EventTarget&quot;&gt;
+    &lt;webidl&gt;  interface EventTarget {
+    void addEventListener(DOMString type,
+                          &lt;ref&gt;EventListener&lt;/ref&gt; listener,
+                          boolean useCapture);
+  };&lt;/webidl&gt;
+    &lt;Operation name=&quot;addEventListener&quot; id=&quot;::EventTarget::addEventListener&quot;&gt;
+      &lt;webidl&gt;    void addEventListener(DOMString type,
+                          &lt;ref&gt;EventListener&lt;/ref&gt; listener,
+                          boolean useCapture);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;type&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;listener&quot;&gt;
+          &lt;Type name=&quot;EventListener&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;useCapture&quot;&gt;
+          &lt;Type type=&quot;boolean&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Implements name1=&quot;Node&quot; name2=&quot;EventTarget&quot;&gt;
+    &lt;webidl&gt;  &lt;ref&gt;Node&lt;/ref&gt; implements &lt;ref&gt;EventTarget&lt;/ref&gt;;&lt;/webidl&gt;
+  &lt;/Implements&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlindexedpropertieswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface OrderedMap {
+  readonly attribute unsigned long size;
+
+  getter any getByIndex(unsigned long index);
+  setter void setByIndex(unsigned long index, any value);
+  deleter void removeByIndex(unsigned long index);
+
+  getter any get(DOMString name);
+  setter creator void set(DOMString name, any value);
+  deleter void remove(DOMString name);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;OrderedMap&quot; id=&quot;::OrderedMap&quot;&gt;
+    &lt;webidl&gt;interface OrderedMap {
+  readonly attribute unsigned long size;
+
+  getter any getByIndex(unsigned long index);
+  setter void setByIndex(unsigned long index, any value);
+  deleter void removeByIndex(unsigned long index);
+
+  getter any get(DOMString name);
+  setter creator void set(DOMString name, any value);
+  deleter void remove(DOMString name);
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;size&quot; id=&quot;::OrderedMap::size&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long size;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation getter=&quot;getter&quot; name=&quot;getByIndex&quot; id=&quot;::OrderedMap::getByIndex&quot;&gt;
+      &lt;webidl&gt;  getter any getByIndex(unsigned long index);&lt;/webidl&gt;
+      &lt;Type type=&quot;any&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;index&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation setter=&quot;setter&quot; name=&quot;setByIndex&quot; id=&quot;::OrderedMap::setByIndex&quot;&gt;
+      &lt;webidl&gt;  setter void setByIndex(unsigned long index, any value);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;index&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;value&quot;&gt;
+          &lt;Type type=&quot;any&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation deleter=&quot;deleter&quot; name=&quot;removeByIndex&quot; id=&quot;::OrderedMap::removeByIndex&quot;&gt;
+      &lt;webidl&gt;  deleter void removeByIndex(unsigned long index);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;index&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation getter=&quot;getter&quot; name=&quot;get&quot; id=&quot;::OrderedMap::get&quot;&gt;
+      &lt;webidl&gt;  getter any get(DOMString name);&lt;/webidl&gt;
+      &lt;Type type=&quot;any&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;name&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation setter=&quot;setter&quot; creator=&quot;creator&quot; name=&quot;set&quot; id=&quot;::OrderedMap::set&quot;&gt;
+      &lt;webidl&gt;  setter creator void set(DOMString name, any value);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;name&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;value&quot;&gt;
+          &lt;Type type=&quot;any&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation deleter=&quot;deleter&quot; name=&quot;remove&quot; id=&quot;::OrderedMap::remove&quot;&gt;
+      &lt;webidl&gt;  deleter void remove(DOMString name);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;name&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlinheritsgetterwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Animal {
+
+  readonly attribute DOMString name;
+};
+
+interface Person : &lt;ref&gt;Animal&lt;/ref&gt; {
+
+  readonly attribute unsigned short age;
+
+  inherit attribute DOMString name;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Animal&quot; id=&quot;::Animal&quot;&gt;
+    &lt;webidl&gt;interface Animal {
+
+  readonly attribute DOMString name;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;name&quot; id=&quot;::Animal::name&quot;&gt;
+      &lt;webidl&gt;  readonly attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Person&quot; id=&quot;::Person&quot;&gt;
+    &lt;webidl&gt;interface Person : &lt;ref&gt;Animal&lt;/ref&gt; {
+
+  readonly attribute unsigned short age;
+
+  inherit attribute DOMString name;
+};&lt;/webidl&gt;
+    &lt;InterfaceInheritance&gt;
+      &lt;Name name=&quot;Animal&quot;/&gt;
+    &lt;/InterfaceInheritance&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;age&quot; id=&quot;::Person::age&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned short age;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute inherit=&quot;inherit&quot; name=&quot;name&quot; id=&quot;::Person::name&quot;&gt;
+      &lt;webidl&gt;  inherit attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlinterfaceinheritswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Animal {
+  attribute DOMString name;
+};
+
+interface Human : &lt;ref&gt;Animal&lt;/ref&gt; {
+  attribute &lt;ref&gt;Dog&lt;/ref&gt; pet;
+};
+
+interface Dog : &lt;ref&gt;Animal&lt;/ref&gt; {
+  attribute &lt;ref&gt;Human&lt;/ref&gt; owner;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Animal&quot; id=&quot;::Animal&quot;&gt;
+    &lt;webidl&gt;interface Animal {
+  attribute DOMString name;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Animal::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Human&quot; id=&quot;::Human&quot;&gt;
+    &lt;webidl&gt;interface Human : &lt;ref&gt;Animal&lt;/ref&gt; {
+  attribute &lt;ref&gt;Dog&lt;/ref&gt; pet;
+};&lt;/webidl&gt;
+    &lt;InterfaceInheritance&gt;
+      &lt;Name name=&quot;Animal&quot;/&gt;
+    &lt;/InterfaceInheritance&gt;
+    &lt;Attribute name=&quot;pet&quot; id=&quot;::Human::pet&quot;&gt;
+      &lt;webidl&gt;  attribute &lt;ref&gt;Dog&lt;/ref&gt; pet;&lt;/webidl&gt;
+      &lt;Type name=&quot;Dog&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Dog&quot; id=&quot;::Dog&quot;&gt;
+    &lt;webidl&gt;interface Dog : &lt;ref&gt;Animal&lt;/ref&gt; {
+  attribute &lt;ref&gt;Human&lt;/ref&gt; owner;
+};&lt;/webidl&gt;
+    &lt;InterfaceInheritance&gt;
+      &lt;Name name=&quot;Animal&quot;/&gt;
+    &lt;/InterfaceInheritance&gt;
+    &lt;Attribute name=&quot;owner&quot; id=&quot;::Dog::owner&quot;&gt;
+      &lt;webidl&gt;  attribute &lt;ref&gt;Human&lt;/ref&gt; owner;&lt;/webidl&gt;
+      &lt;Type name=&quot;Human&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmliteratorwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,132 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface SessionManager {
+  &lt;ref&gt;Session&lt;/ref&gt; getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  &lt;ref&gt;Session&lt;/ref&gt; iterator;
+};
+
+interface Session {
+  readonly attribute DOMString username;
+};
+
+interface SessionManager2 {
+  &lt;ref&gt;Session2&lt;/ref&gt; getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  &lt;ref&gt;Session2&lt;/ref&gt; iterator = SessionIterator;
+};
+
+interface Session2 {
+  readonly attribute DOMString username;
+};
+
+interface SessionIterator {
+  readonly attribute unsigned long remainingSessions;
+};
+
+     interface NodeList {
+       &lt;ref&gt;Node&lt;/ref&gt; iterator = NodeIterator;
+     };
+
+     interface NodeIterator {
+       &lt;ref&gt;Node&lt;/ref&gt; iterator object;
+     };&lt;/webidl&gt;
+  &lt;Interface name=&quot;SessionManager&quot; id=&quot;::SessionManager&quot;&gt;
+    &lt;webidl&gt;interface SessionManager {
+  &lt;ref&gt;Session&lt;/ref&gt; getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  &lt;ref&gt;Session&lt;/ref&gt; iterator;
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;getSessionForUser&quot; id=&quot;::SessionManager::getSessionForUser&quot;&gt;
+      &lt;webidl&gt;  &lt;ref&gt;Session&lt;/ref&gt; getSessionForUser(DOMString username);&lt;/webidl&gt;
+      &lt;Type name=&quot;Session&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;username&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;sessionCount&quot; id=&quot;::SessionManager::sessionCount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long sessionCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Iterator&gt;
+      &lt;webidl&gt;  &lt;ref&gt;Session&lt;/ref&gt; iterator;&lt;/webidl&gt;
+      &lt;Type name=&quot;Session&quot;/&gt;
+    &lt;/Iterator&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Session&quot; id=&quot;::Session&quot;&gt;
+    &lt;webidl&gt;interface Session {
+  readonly attribute DOMString username;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;username&quot; id=&quot;::Session::username&quot;&gt;
+      &lt;webidl&gt;  readonly attribute DOMString username;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;SessionManager2&quot; id=&quot;::SessionManager2&quot;&gt;
+    &lt;webidl&gt;interface SessionManager2 {
+  &lt;ref&gt;Session2&lt;/ref&gt; getSessionForUser(DOMString username);
+  readonly attribute unsigned long sessionCount;
+
+  &lt;ref&gt;Session2&lt;/ref&gt; iterator = SessionIterator;
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;getSessionForUser&quot; id=&quot;::SessionManager2::getSessionForUser&quot;&gt;
+      &lt;webidl&gt;  &lt;ref&gt;Session2&lt;/ref&gt; getSessionForUser(DOMString username);&lt;/webidl&gt;
+      &lt;Type name=&quot;Session2&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;username&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;sessionCount&quot; id=&quot;::SessionManager2::sessionCount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long sessionCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Iterator interface=&quot;SessionIterator&quot;&gt;
+      &lt;webidl&gt;  &lt;ref&gt;Session2&lt;/ref&gt; iterator = SessionIterator;&lt;/webidl&gt;
+      &lt;Type name=&quot;Session2&quot;/&gt;
+    &lt;/Iterator&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Session2&quot; id=&quot;::Session2&quot;&gt;
+    &lt;webidl&gt;interface Session2 {
+  readonly attribute DOMString username;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;username&quot; id=&quot;::Session2::username&quot;&gt;
+      &lt;webidl&gt;  readonly attribute DOMString username;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;SessionIterator&quot; id=&quot;::SessionIterator&quot;&gt;
+    &lt;webidl&gt;interface SessionIterator {
+  readonly attribute unsigned long remainingSessions;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;remainingSessions&quot; id=&quot;::SessionIterator::remainingSessions&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long remainingSessions;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;NodeList&quot; id=&quot;::NodeList&quot;&gt;
+    &lt;webidl&gt;     interface NodeList {
+       &lt;ref&gt;Node&lt;/ref&gt; iterator = NodeIterator;
+     };&lt;/webidl&gt;
+    &lt;Iterator interface=&quot;NodeIterator&quot;&gt;
+      &lt;webidl&gt;       &lt;ref&gt;Node&lt;/ref&gt; iterator = NodeIterator;&lt;/webidl&gt;
+      &lt;Type name=&quot;Node&quot;/&gt;
+    &lt;/Iterator&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;NodeIterator&quot; id=&quot;::NodeIterator&quot;&gt;
+    &lt;webidl&gt;     interface NodeIterator {
+       &lt;ref&gt;Node&lt;/ref&gt; iterator object;
+     };&lt;/webidl&gt;
+    &lt;IteratorObject&gt;
+      &lt;webidl&gt;       &lt;ref&gt;Node&lt;/ref&gt; iterator object;&lt;/webidl&gt;
+      &lt;Type name=&quot;Node&quot;/&gt;
+    &lt;/IteratorObject&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlmodulewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;Module name=&quot;gfx&quot; id=&quot;::gfx&quot;&gt;
+    &lt;webidl&gt;module gfx {
+
+  module geom {
+    interface Shape {  };
+    interface Rectangle : &lt;ref&gt;Shape&lt;/ref&gt; {  };
+    interface Path : &lt;ref&gt;Shape&lt;/ref&gt; {  };
+  };
+
+  interface GraphicsContext {
+    void fillShape(&lt;ref&gt;geom::Shape&lt;/ref&gt; s);
+    void strokeShape(&lt;ref&gt;geom::Shape&lt;/ref&gt; s);
+  };
+};&lt;/webidl&gt;
+    &lt;Module name=&quot;geom&quot; id=&quot;::gfx::geom&quot;&gt;
+      &lt;webidl&gt;  module geom {
+    interface Shape {  };
+    interface Rectangle : &lt;ref&gt;Shape&lt;/ref&gt; {  };
+    interface Path : &lt;ref&gt;Shape&lt;/ref&gt; {  };
+  };&lt;/webidl&gt;
+      &lt;Interface name=&quot;Shape&quot; id=&quot;::gfx::geom::Shape&quot;&gt;
+        &lt;webidl&gt;    interface Shape {  };&lt;/webidl&gt;
+      &lt;/Interface&gt;
+      &lt;Interface name=&quot;Rectangle&quot; id=&quot;::gfx::geom::Rectangle&quot;&gt;
+        &lt;webidl&gt;    interface Rectangle : &lt;ref&gt;Shape&lt;/ref&gt; {  };&lt;/webidl&gt;
+        &lt;InterfaceInheritance&gt;
+          &lt;Name name=&quot;Shape&quot;/&gt;
+        &lt;/InterfaceInheritance&gt;
+      &lt;/Interface&gt;
+      &lt;Interface name=&quot;Path&quot; id=&quot;::gfx::geom::Path&quot;&gt;
+        &lt;webidl&gt;    interface Path : &lt;ref&gt;Shape&lt;/ref&gt; {  };&lt;/webidl&gt;
+        &lt;InterfaceInheritance&gt;
+          &lt;Name name=&quot;Shape&quot;/&gt;
+        &lt;/InterfaceInheritance&gt;
+      &lt;/Interface&gt;
+    &lt;/Module&gt;
+    &lt;Interface name=&quot;GraphicsContext&quot; id=&quot;::gfx::GraphicsContext&quot;&gt;
+      &lt;webidl&gt;  interface GraphicsContext {
+    void fillShape(&lt;ref&gt;geom::Shape&lt;/ref&gt; s);
+    void strokeShape(&lt;ref&gt;geom::Shape&lt;/ref&gt; s);
+  };&lt;/webidl&gt;
+      &lt;Operation name=&quot;fillShape&quot; id=&quot;::gfx::GraphicsContext::fillShape&quot;&gt;
+        &lt;webidl&gt;    void fillShape(&lt;ref&gt;geom::Shape&lt;/ref&gt; s);&lt;/webidl&gt;
+        &lt;Type type=&quot;void&quot;/&gt;
+        &lt;ArgumentList&gt;
+          &lt;Argument name=&quot;s&quot;&gt;
+            &lt;Type name=&quot;geom::Shape&quot;/&gt;
+          &lt;/Argument&gt;
+        &lt;/ArgumentList&gt;
+      &lt;/Operation&gt;
+      &lt;Operation name=&quot;strokeShape&quot; id=&quot;::gfx::GraphicsContext::strokeShape&quot;&gt;
+        &lt;webidl&gt;    void strokeShape(&lt;ref&gt;geom::Shape&lt;/ref&gt; s);&lt;/webidl&gt;
+        &lt;Type type=&quot;void&quot;/&gt;
+        &lt;ArgumentList&gt;
+          &lt;Argument name=&quot;s&quot;&gt;
+            &lt;Type name=&quot;geom::Shape&quot;/&gt;
+          &lt;/Argument&gt;
+        &lt;/ArgumentList&gt;
+      &lt;/Operation&gt;
+    &lt;/Interface&gt;
+  &lt;/Module&gt;
+  &lt;Module name=&quot;gui&quot; id=&quot;::gui&quot;&gt;
+    &lt;webidl&gt;module gui {
+
+  interface Widget {   };
+
+  interface Window : &lt;ref&gt;Widget&lt;/ref&gt; {
+    &lt;ref&gt;gfx::GraphicsContext&lt;/ref&gt; getGraphicsContext();
+  };
+
+  interface Button : &lt;ref&gt;Widget&lt;/ref&gt; {   };
+};&lt;/webidl&gt;
+    &lt;Interface name=&quot;Widget&quot; id=&quot;::gui::Widget&quot;&gt;
+      &lt;webidl&gt;  interface Widget {   };&lt;/webidl&gt;
+    &lt;/Interface&gt;
+    &lt;Interface name=&quot;Window&quot; id=&quot;::gui::Window&quot;&gt;
+      &lt;webidl&gt;  interface Window : &lt;ref&gt;Widget&lt;/ref&gt; {
+    &lt;ref&gt;gfx::GraphicsContext&lt;/ref&gt; getGraphicsContext();
+  };&lt;/webidl&gt;
+      &lt;InterfaceInheritance&gt;
+        &lt;Name name=&quot;Widget&quot;/&gt;
+      &lt;/InterfaceInheritance&gt;
+      &lt;Operation name=&quot;getGraphicsContext&quot; id=&quot;::gui::Window::getGraphicsContext&quot;&gt;
+        &lt;webidl&gt;    &lt;ref&gt;gfx::GraphicsContext&lt;/ref&gt; getGraphicsContext();&lt;/webidl&gt;
+        &lt;Type name=&quot;gfx::GraphicsContext&quot;/&gt;
+        &lt;ArgumentList/&gt;
+      &lt;/Operation&gt;
+    &lt;/Interface&gt;
+    &lt;Interface name=&quot;Button&quot; id=&quot;::gui::Button&quot;&gt;
+      &lt;webidl&gt;  interface Button : &lt;ref&gt;Widget&lt;/ref&gt; {   };&lt;/webidl&gt;
+      &lt;InterfaceInheritance&gt;
+        &lt;Name name=&quot;Widget&quot;/&gt;
+      &lt;/InterfaceInheritance&gt;
+    &lt;/Interface&gt;
+  &lt;/Module&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnamedconstructorwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[NamedConstructor=Audio,
+ NamedConstructor=Audio(DOMString src)]
+interface HTMLAudioElement : &lt;ref&gt;HTMLMediaElement&lt;/ref&gt; {
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;HTMLAudioElement&quot; id=&quot;::HTMLAudioElement&quot;&gt;
+    &lt;webidl&gt;[NamedConstructor=Audio,
+ NamedConstructor=Audio(DOMString src)]
+interface HTMLAudioElement : &lt;ref&gt;HTMLMediaElement&lt;/ref&gt; {
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;NamedConstructor&quot; value=&quot;Audio&quot;&gt;
+        &lt;webidl&gt;NamedConstructor&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+      &lt;ExtendedAttribute name=&quot;NamedConstructor&quot; value=&quot;Audio&quot;&gt;
+        &lt;webidl&gt; NamedConstructor=Audio(DOMString src)&lt;/webidl&gt;
+        &lt;ArgumentList&gt;
+          &lt;Argument name=&quot;src&quot;&gt;
+            &lt;Type type=&quot;DOMString&quot;/&gt;
+          &lt;/Argument&gt;
+        &lt;/ArgumentList&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;InterfaceInheritance&gt;
+      &lt;Name name=&quot;HTMLMediaElement&quot;/&gt;
+    &lt;/InterfaceInheritance&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnamespaceobjectwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;Module name=&quot;acme&quot; id=&quot;::acme&quot;&gt;
+    &lt;webidl&gt;[NamespaceObject]
+module acme {
+  
+  exception DeviceException { };
+
+  module pim {
+
+    [Constructor]
+    interface Contact { };
+
+    [Constructor,
+     NamedConstructor=RecurringEvent(long freq)]
+    interface CalendarEvent { };
+  };
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;NamespaceObject&quot;/&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Exception name=&quot;DeviceException&quot; id=&quot;::acme::DeviceException&quot;&gt;
+      &lt;webidl&gt;  exception DeviceException { };&lt;/webidl&gt;
+    &lt;/Exception&gt;
+    &lt;Module name=&quot;pim&quot; id=&quot;::acme::pim&quot;&gt;
+      &lt;webidl&gt;  module pim {
+
+    [Constructor]
+    interface Contact { };
+
+    [Constructor,
+     NamedConstructor=RecurringEvent(long freq)]
+    interface CalendarEvent { };
+  };&lt;/webidl&gt;
+      &lt;Interface name=&quot;Contact&quot; id=&quot;::acme::pim::Contact&quot;&gt;
+        &lt;webidl&gt;    [Constructor]
+    interface Contact { };&lt;/webidl&gt;
+        &lt;ExtendedAttributeList&gt;
+          &lt;ExtendedAttribute name=&quot;Constructor&quot;/&gt;
+        &lt;/ExtendedAttributeList&gt;
+      &lt;/Interface&gt;
+      &lt;Interface name=&quot;CalendarEvent&quot; id=&quot;::acme::pim::CalendarEvent&quot;&gt;
+        &lt;webidl&gt;    [Constructor,
+     NamedConstructor=RecurringEvent(long freq)]
+    interface CalendarEvent { };&lt;/webidl&gt;
+        &lt;ExtendedAttributeList&gt;
+          &lt;ExtendedAttribute name=&quot;Constructor&quot;/&gt;
+          &lt;ExtendedAttribute name=&quot;NamedConstructor&quot; value=&quot;RecurringEvent&quot;&gt;
+            &lt;ArgumentList&gt;
+              &lt;Argument name=&quot;freq&quot;&gt;
+                &lt;Type type=&quot;long&quot;/&gt;
+              &lt;/Argument&gt;
+            &lt;/ArgumentList&gt;
+          &lt;/ExtendedAttribute&gt;
+        &lt;/ExtendedAttributeList&gt;
+      &lt;/Interface&gt;
+    &lt;/Module&gt;
+  &lt;/Module&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnointerfaceobjectwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[NoInterfaceObject]
+interface Query {
+  any lookupEntry(unsigned long key);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Query&quot; id=&quot;::Query&quot;&gt;
+    &lt;webidl&gt;[NoInterfaceObject]
+interface Query {
+  any lookupEntry(unsigned long key);
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;NoInterfaceObject&quot;&gt;
+        &lt;webidl&gt;NoInterfaceObject&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Operation name=&quot;lookupEntry&quot; id=&quot;::Query::lookupEntry&quot;&gt;
+      &lt;webidl&gt;  any lookupEntry(unsigned long key);&lt;/webidl&gt;
+      &lt;Type type=&quot;any&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;key&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnullablewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface MyConstants {
+  const boolean? ARE_WE_THERE_YET = false;
+};
+
+interface Node {
+  readonly attribute DOMString? namespaceURI;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;MyConstants&quot; id=&quot;::MyConstants&quot;&gt;
+    &lt;webidl&gt;interface MyConstants {
+  const boolean? ARE_WE_THERE_YET = false;
+};&lt;/webidl&gt;
+    &lt;Const name=&quot;ARE_WE_THERE_YET&quot; value=&quot;false&quot; id=&quot;::MyConstants::ARE_WE_THERE_YET&quot;&gt;
+      &lt;webidl&gt;  const boolean? ARE_WE_THERE_YET = false;&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/Const&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Node&quot; id=&quot;::Node&quot;&gt;
+    &lt;webidl&gt;interface Node {
+  readonly attribute DOMString? namespaceURI;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;namespaceURI&quot; id=&quot;::Node::namespaceURI&quot;&gt;
+      &lt;webidl&gt;  readonly attribute DOMString? namespaceURI;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlnullableobjectswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface A {
+};
+interface B {
+};
+interface C {
+  void f(&lt;ref&gt;A&lt;/ref&gt;? x);
+  void f(&lt;ref&gt;B&lt;/ref&gt;? x);
+
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;A&quot; id=&quot;::A&quot;&gt;
+    &lt;webidl&gt;interface A {
+};&lt;/webidl&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;B&quot; id=&quot;::B&quot;&gt;
+    &lt;webidl&gt;interface B {
+};&lt;/webidl&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;C&quot; id=&quot;::C&quot;&gt;
+    &lt;webidl&gt;interface C {
+  void f(&lt;ref&gt;A&lt;/ref&gt;? x);
+  void f(&lt;ref&gt;B&lt;/ref&gt;? x);
+
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::C::f&quot;&gt;
+      &lt;webidl&gt;  void f(&lt;ref&gt;A&lt;/ref&gt;? x);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;x&quot;&gt;
+          &lt;Type name=&quot;A&quot; nullable=&quot;nullable&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::C::f&quot;&gt;
+      &lt;webidl&gt;  void f(&lt;ref&gt;B&lt;/ref&gt;? x);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;x&quot;&gt;
+          &lt;Type name=&quot;B&quot; nullable=&quot;nullable&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmloperationoptionalargwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface ColorCreator {
+  object createColor(float v1, float v2, float v3, optional float alpha = 3.5);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;ColorCreator&quot; id=&quot;::ColorCreator&quot;&gt;
+    &lt;webidl&gt;interface ColorCreator {
+  object createColor(float v1, float v2, float v3, optional float alpha = 3.5);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;createColor&quot; id=&quot;::ColorCreator::createColor&quot;&gt;
+      &lt;webidl&gt;  object createColor(float v1, float v2, float v3, optional float alpha = 3.5);&lt;/webidl&gt;
+      &lt;Type type=&quot;object&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;v1&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;v2&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;v3&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument optional=&quot;optional&quot; name=&quot;alpha&quot; value=&quot;3.5&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmloverloadingwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,113 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface A {
+};
+
+interface B {
+};
+
+interface C {
+  void f(&lt;ref&gt;A&lt;/ref&gt; x);
+  void f(&lt;ref&gt;B&lt;/ref&gt; x);
+};
+
+interface A {
+void f(DOMString a);
+void f([AllowAny] DOMString a, DOMString b, float... c);
+void f();
+void f(long a, DOMString b, optional DOMString c, float... d);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;A&quot; id=&quot;::A&quot;&gt;
+    &lt;webidl&gt;interface A {
+};&lt;/webidl&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;B&quot; id=&quot;::B&quot;&gt;
+    &lt;webidl&gt;interface B {
+};&lt;/webidl&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;C&quot; id=&quot;::C&quot;&gt;
+    &lt;webidl&gt;interface C {
+  void f(&lt;ref&gt;A&lt;/ref&gt; x);
+  void f(&lt;ref&gt;B&lt;/ref&gt; x);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::C::f&quot;&gt;
+      &lt;webidl&gt;  void f(&lt;ref&gt;A&lt;/ref&gt; x);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;x&quot;&gt;
+          &lt;Type name=&quot;A&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::C::f&quot;&gt;
+      &lt;webidl&gt;  void f(&lt;ref&gt;B&lt;/ref&gt; x);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;x&quot;&gt;
+          &lt;Type name=&quot;B&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;A&quot; id=&quot;::A&quot;&gt;
+    &lt;webidl&gt;interface A {
+void f(DOMString a);
+void f([AllowAny] DOMString a, DOMString b, float... c);
+void f();
+void f(long a, DOMString b, optional DOMString c, float... d);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::A::f&quot;&gt;
+      &lt;webidl&gt; void f(DOMString a);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;a&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::A::f&quot;&gt;
+      &lt;webidl&gt; void f([AllowAny] DOMString a, DOMString b, float... c);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;a&quot;&gt;
+          &lt;ExtendedAttributeList&gt;
+            &lt;ExtendedAttribute name=&quot;AllowAny&quot;&gt;
+              &lt;webidl&gt;AllowAny&lt;/webidl&gt;
+            &lt;/ExtendedAttribute&gt;
+          &lt;/ExtendedAttributeList&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;b&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument ellipsis=&quot;ellipsis&quot; name=&quot;c&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::A::f&quot;&gt;
+      &lt;webidl&gt; void f();&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;f&quot; id=&quot;::A::f&quot;&gt;
+      &lt;webidl&gt; void f(long a, DOMString b, optional DOMString c, float... d);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;a&quot;&gt;
+          &lt;Type type=&quot;long&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;b&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument optional=&quot;optional&quot; name=&quot;c&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument ellipsis=&quot;ellipsis&quot; name=&quot;d&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmloverridebuiltinswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[OverrideBuiltins]
+interface StringMap2 {
+  readonly attribute unsigned long length;
+  getter DOMString lookup(DOMString key);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;StringMap2&quot; id=&quot;::StringMap2&quot;&gt;
+    &lt;webidl&gt;[OverrideBuiltins]
+interface StringMap2 {
+  readonly attribute unsigned long length;
+  getter DOMString lookup(DOMString key);
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;OverrideBuiltins&quot;&gt;
+        &lt;webidl&gt;OverrideBuiltins&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;length&quot; id=&quot;::StringMap2::length&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long length;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation getter=&quot;getter&quot; name=&quot;lookup&quot; id=&quot;::StringMap2::lookup&quot;&gt;
+      &lt;webidl&gt;  getter DOMString lookup(DOMString key);&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;key&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlpartialinterfacewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Foo {
+  attribute DOMString bar;
+};
+
+partial interface Foo {
+  attribute DOMString quux;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Foo&quot; id=&quot;::Foo&quot;&gt;
+    &lt;webidl&gt;interface Foo {
+  attribute DOMString bar;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;bar&quot; id=&quot;::Foo::bar&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString bar;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Foo&quot; partial=&quot;partial&quot; id=&quot;::Foo&quot;&gt;
+    &lt;webidl&gt;partial interface Foo {
+  attribute DOMString quux;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;quux&quot; id=&quot;::Foo::quux&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString quux;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlprimitiveswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,112 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Primitives {
+  attribute boolean truth;
+  attribute byte character;
+  attribute octet value;
+  attribute short number;
+  attribute unsigned short positive;
+  attribute long big;
+  attribute unsigned long bigpositive;
+  attribute long long bigbig;
+  attribute  unsigned long long bigbigpositive;
+  attribute float real;
+  attribute double bigreal; 
+  attribute unrestricted float realwithinfinity;
+  attribute unrestricted double bigrealwithinfinity; 
+  attribute DOMString string; 
+  attribute ByteString bytes; 
+  attribute Date date;
+  attribute RegExp regexp;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Primitives&quot; id=&quot;::Primitives&quot;&gt;
+    &lt;webidl&gt;interface Primitives {
+  attribute boolean truth;
+  attribute byte character;
+  attribute octet value;
+  attribute short number;
+  attribute unsigned short positive;
+  attribute long big;
+  attribute unsigned long bigpositive;
+  attribute long long bigbig;
+  attribute  unsigned long long bigbigpositive;
+  attribute float real;
+  attribute double bigreal; 
+  attribute unrestricted float realwithinfinity;
+  attribute unrestricted double bigrealwithinfinity; 
+  attribute DOMString string; 
+  attribute ByteString bytes; 
+  attribute Date date;
+  attribute RegExp regexp;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;truth&quot; id=&quot;::Primitives::truth&quot;&gt;
+      &lt;webidl&gt;  attribute boolean truth;&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;character&quot; id=&quot;::Primitives::character&quot;&gt;
+      &lt;webidl&gt;  attribute byte character;&lt;/webidl&gt;
+      &lt;Type type=&quot;byte&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;value&quot; id=&quot;::Primitives::value&quot;&gt;
+      &lt;webidl&gt;  attribute octet value;&lt;/webidl&gt;
+      &lt;Type type=&quot;octet&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;number&quot; id=&quot;::Primitives::number&quot;&gt;
+      &lt;webidl&gt;  attribute short number;&lt;/webidl&gt;
+      &lt;Type type=&quot;short&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;positive&quot; id=&quot;::Primitives::positive&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned short positive;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;big&quot; id=&quot;::Primitives::big&quot;&gt;
+      &lt;webidl&gt;  attribute long big;&lt;/webidl&gt;
+      &lt;Type type=&quot;long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bigpositive&quot; id=&quot;::Primitives::bigpositive&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long bigpositive;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bigbig&quot; id=&quot;::Primitives::bigbig&quot;&gt;
+      &lt;webidl&gt;  attribute long long bigbig;&lt;/webidl&gt;
+      &lt;Type type=&quot;long long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bigbigpositive&quot; id=&quot;::Primitives::bigbigpositive&quot;&gt;
+      &lt;webidl&gt;  attribute  unsigned long long bigbigpositive;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;real&quot; id=&quot;::Primitives::real&quot;&gt;
+      &lt;webidl&gt;  attribute float real;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bigreal&quot; id=&quot;::Primitives::bigreal&quot;&gt;
+      &lt;webidl&gt;  attribute double bigreal;&lt;/webidl&gt;
+      &lt;Type type=&quot;double&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;realwithinfinity&quot; id=&quot;::Primitives::realwithinfinity&quot;&gt;
+      &lt;webidl&gt;  attribute unrestricted float realwithinfinity;&lt;/webidl&gt;
+      &lt;Type type=&quot;unrestricted float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bigrealwithinfinity&quot; id=&quot;::Primitives::bigrealwithinfinity&quot;&gt;
+      &lt;webidl&gt;  attribute unrestricted double bigrealwithinfinity;&lt;/webidl&gt;
+      &lt;Type type=&quot;unrestricted double&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;string&quot; id=&quot;::Primitives::string&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString string;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bytes&quot; id=&quot;::Primitives::bytes&quot;&gt;
+      &lt;webidl&gt;  attribute ByteString bytes;&lt;/webidl&gt;
+      &lt;Type type=&quot;ByteString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;date&quot; id=&quot;::Primitives::date&quot;&gt;
+      &lt;webidl&gt;  attribute Date date;&lt;/webidl&gt;
+      &lt;Type type=&quot;Date&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;regexp&quot; id=&quot;::Primitives::regexp&quot;&gt;
+      &lt;webidl&gt;  attribute RegExp regexp;&lt;/webidl&gt;
+      &lt;Type type=&quot;RegExp&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlprototyperootwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[PrototypeRoot]
+interface Node {
+  readonly attribute unsigned short nodeType;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Node&quot; id=&quot;::Node&quot;&gt;
+    &lt;webidl&gt;[PrototypeRoot]
+interface Node {
+  readonly attribute unsigned short nodeType;
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;PrototypeRoot&quot;&gt;
+        &lt;webidl&gt;PrototypeRoot&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;nodeType&quot; id=&quot;::Node::nodeType&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned short nodeType;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlputforwardswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Person {
+  [PutForwards=full] readonly attribute &lt;ref&gt;Name&lt;/ref&gt; name;
+  attribute unsigned short age;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Person&quot; id=&quot;::Person&quot;&gt;
+    &lt;webidl&gt;interface Person {
+  [PutForwards=full] readonly attribute &lt;ref&gt;Name&lt;/ref&gt; name;
+  attribute unsigned short age;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;name&quot; id=&quot;::Person::name&quot;&gt;
+      &lt;webidl&gt;  [PutForwards=full] readonly attribute &lt;ref&gt;Name&lt;/ref&gt; name;&lt;/webidl&gt;
+      &lt;ExtendedAttributeList&gt;
+        &lt;ExtendedAttribute name=&quot;PutForwards&quot; value=&quot;full&quot;&gt;
+          &lt;webidl&gt;PutForwards&lt;/webidl&gt;
+        &lt;/ExtendedAttribute&gt;
+      &lt;/ExtendedAttributeList&gt;
+      &lt;Type name=&quot;Name&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;age&quot; id=&quot;::Person::age&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned short age;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned short&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlregoperationswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Dimensions {
+  attribute unsigned long width;
+  attribute unsigned long height;
+};
+
+exception NoPointerDevice { };
+
+interface Button {
+
+  boolean isMouseOver();
+
+  void setDimensions(&lt;ref&gt;Dimensions&lt;/ref&gt; size);
+  void setDimensions(unsigned long width, unsigned long height);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Dimensions&quot; id=&quot;::Dimensions&quot;&gt;
+    &lt;webidl&gt;interface Dimensions {
+  attribute unsigned long width;
+  attribute unsigned long height;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;width&quot; id=&quot;::Dimensions::width&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long width;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;height&quot; id=&quot;::Dimensions::height&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long height;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Exception name=&quot;NoPointerDevice&quot; id=&quot;::NoPointerDevice&quot;&gt;
+    &lt;webidl&gt;exception NoPointerDevice { };&lt;/webidl&gt;
+  &lt;/Exception&gt;
+  &lt;Interface name=&quot;Button&quot; id=&quot;::Button&quot;&gt;
+    &lt;webidl&gt;interface Button {
+
+  boolean isMouseOver();
+
+  void setDimensions(&lt;ref&gt;Dimensions&lt;/ref&gt; size);
+  void setDimensions(unsigned long width, unsigned long height);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;isMouseOver&quot; id=&quot;::Button::isMouseOver&quot;&gt;
+      &lt;webidl&gt;  boolean isMouseOver();&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;setDimensions&quot; id=&quot;::Button::setDimensions&quot;&gt;
+      &lt;webidl&gt;  void setDimensions(&lt;ref&gt;Dimensions&lt;/ref&gt; size);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;size&quot;&gt;
+          &lt;Type name=&quot;Dimensions&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;setDimensions&quot; id=&quot;::Button::setDimensions&quot;&gt;
+      &lt;webidl&gt;  void setDimensions(unsigned long width, unsigned long height);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;width&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;height&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlreplaceablewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Counter {
+  [Replaceable] readonly attribute unsigned long value;
+  void increment();
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Counter&quot; id=&quot;::Counter&quot;&gt;
+    &lt;webidl&gt;interface Counter {
+  [Replaceable] readonly attribute unsigned long value;
+  void increment();
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;value&quot; id=&quot;::Counter::value&quot;&gt;
+      &lt;webidl&gt;  [Replaceable] readonly attribute unsigned long value;&lt;/webidl&gt;
+      &lt;ExtendedAttributeList&gt;
+        &lt;ExtendedAttribute name=&quot;Replaceable&quot;&gt;
+          &lt;webidl&gt;Replaceable&lt;/webidl&gt;
+        &lt;/ExtendedAttribute&gt;
+      &lt;/ExtendedAttributeList&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;increment&quot; id=&quot;::Counter::increment&quot;&gt;
+      &lt;webidl&gt;  void increment();&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlsequencewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Canvas {
+  void drawPolygon(sequence&amp;lt;float&gt; coordinates);
+  sequence&amp;lt;float&gt; getInflectionPoints();
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Canvas&quot; id=&quot;::Canvas&quot;&gt;
+    &lt;webidl&gt;interface Canvas {
+  void drawPolygon(sequence&amp;lt;float&gt; coordinates);
+  sequence&amp;lt;float&gt; getInflectionPoints();
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;drawPolygon&quot; id=&quot;::Canvas::drawPolygon&quot;&gt;
+      &lt;webidl&gt;  void drawPolygon(sequence&amp;lt;float&gt; coordinates);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;coordinates&quot;&gt;
+          &lt;Type type=&quot;sequence&quot;&gt;
+            &lt;Type type=&quot;float&quot;/&gt;
+          &lt;/Type&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;getInflectionPoints&quot; id=&quot;::Canvas::getInflectionPoints&quot;&gt;
+      &lt;webidl&gt;  sequence&amp;lt;float&gt; getInflectionPoints();&lt;/webidl&gt;
+      &lt;Type type=&quot;sequence&quot;&gt;
+        &lt;Type type=&quot;float&quot;/&gt;
+      &lt;/Type&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlserializerwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,296 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Transaction {
+  readonly attribute &lt;ref&gt;Account&lt;/ref&gt; from;
+  readonly attribute &lt;ref&gt;Account&lt;/ref&gt; to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer;
+};
+
+interface Account {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer DOMString serialize();
+};
+
+interface Transaction2 {
+  readonly attribute &lt;ref&gt;Account2&lt;/ref&gt; from;
+  readonly attribute &lt;ref&gt;Account2&lt;/ref&gt; to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer = { from, to, amount, description };
+};
+
+interface Account2 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = number;
+};
+
+interface Account3 {
+  attribute DOMString name;
+  attribute unsigned long number;
+
+  serializer = { attribute };
+};
+
+interface Account4 {
+  getter object getItem(unsigned long index);
+  serializer = { getter };
+};
+
+interface Account5 : &lt;ref&gt;Account&lt;/ref&gt; {
+  attribute DOMString secondname;
+  serializer = { inherit, secondname };
+};
+
+interface Account6 : &lt;ref&gt;Account&lt;/ref&gt; {
+  attribute DOMString secondname;
+  serializer = { inherit, attribute };
+};
+
+interface Account7 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = [ name, number ];
+};
+
+interface Account8 {
+  getter object getItem(unsigned long index);
+  serializer = [ getter ];
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Transaction&quot; id=&quot;::Transaction&quot;&gt;
+    &lt;webidl&gt;interface Transaction {
+  readonly attribute &lt;ref&gt;Account&lt;/ref&gt; from;
+  readonly attribute &lt;ref&gt;Account&lt;/ref&gt; to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer;
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;from&quot; id=&quot;::Transaction::from&quot;&gt;
+      &lt;webidl&gt;  readonly attribute &lt;ref&gt;Account&lt;/ref&gt; from;&lt;/webidl&gt;
+      &lt;Type name=&quot;Account&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;to&quot; id=&quot;::Transaction::to&quot;&gt;
+      &lt;webidl&gt;  readonly attribute &lt;ref&gt;Account&lt;/ref&gt; to;&lt;/webidl&gt;
+      &lt;Type name=&quot;Account&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;amount&quot; id=&quot;::Transaction::amount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute float amount;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;description&quot; id=&quot;::Transaction::description&quot;&gt;
+      &lt;webidl&gt;  readonly attribute DOMString description;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;number&quot; id=&quot;::Transaction::number&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long number;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer;&lt;/webidl&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account&quot; id=&quot;::Account&quot;&gt;
+    &lt;webidl&gt;interface Account {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer DOMString serialize();
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Account::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;number&quot; id=&quot;::Account::number&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long number;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation serializer=&quot;serializer&quot; name=&quot;serialize&quot; id=&quot;::Account::serialize&quot;&gt;
+      &lt;webidl&gt;  serializer DOMString serialize();&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Transaction2&quot; id=&quot;::Transaction2&quot;&gt;
+    &lt;webidl&gt;interface Transaction2 {
+  readonly attribute &lt;ref&gt;Account2&lt;/ref&gt; from;
+  readonly attribute &lt;ref&gt;Account2&lt;/ref&gt; to;
+  readonly attribute float amount;
+  readonly attribute DOMString description;
+  readonly attribute unsigned long number;
+
+  serializer = { from, to, amount, description };
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;from&quot; id=&quot;::Transaction2::from&quot;&gt;
+      &lt;webidl&gt;  readonly attribute &lt;ref&gt;Account2&lt;/ref&gt; from;&lt;/webidl&gt;
+      &lt;Type name=&quot;Account2&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;to&quot; id=&quot;::Transaction2::to&quot;&gt;
+      &lt;webidl&gt;  readonly attribute &lt;ref&gt;Account2&lt;/ref&gt; to;&lt;/webidl&gt;
+      &lt;Type name=&quot;Account2&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;amount&quot; id=&quot;::Transaction2::amount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute float amount;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;description&quot; id=&quot;::Transaction2::description&quot;&gt;
+      &lt;webidl&gt;  readonly attribute DOMString description;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;number&quot; id=&quot;::Transaction2::number&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long number;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = { from, to, amount, description };&lt;/webidl&gt;
+      &lt;Map pattern=&quot;selection&quot;&gt;
+        &lt;PatternAttribute name=&quot;from&quot;/&gt;
+        &lt;PatternAttribute name=&quot;to&quot;/&gt;
+        &lt;PatternAttribute name=&quot;amount&quot;/&gt;
+        &lt;PatternAttribute name=&quot;description&quot;/&gt;
+      &lt;/Map&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account2&quot; id=&quot;::Account2&quot;&gt;
+    &lt;webidl&gt;interface Account2 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = number;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Account2::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;number&quot; id=&quot;::Account2::number&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long number;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer attribute=&quot;number&quot;&gt;
+      &lt;webidl&gt;  serializer = number;&lt;/webidl&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account3&quot; id=&quot;::Account3&quot;&gt;
+    &lt;webidl&gt;interface Account3 {
+  attribute DOMString name;
+  attribute unsigned long number;
+
+  serializer = { attribute };
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Account3::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;number&quot; id=&quot;::Account3::number&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long number;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = { attribute };&lt;/webidl&gt;
+      &lt;Map pattern=&quot;all&quot;/&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account4&quot; id=&quot;::Account4&quot;&gt;
+    &lt;webidl&gt;interface Account4 {
+  getter object getItem(unsigned long index);
+  serializer = { getter };
+};&lt;/webidl&gt;
+    &lt;Operation getter=&quot;getter&quot; name=&quot;getItem&quot; id=&quot;::Account4::getItem&quot;&gt;
+      &lt;webidl&gt;  getter object getItem(unsigned long index);&lt;/webidl&gt;
+      &lt;Type type=&quot;object&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;index&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = { getter };&lt;/webidl&gt;
+      &lt;Map pattern=&quot;getter&quot;/&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account5&quot; id=&quot;::Account5&quot;&gt;
+    &lt;webidl&gt;interface Account5 : &lt;ref&gt;Account&lt;/ref&gt; {
+  attribute DOMString secondname;
+  serializer = { inherit, secondname };
+};&lt;/webidl&gt;
+    &lt;InterfaceInheritance&gt;
+      &lt;Name name=&quot;Account&quot;/&gt;
+    &lt;/InterfaceInheritance&gt;
+    &lt;Attribute name=&quot;secondname&quot; id=&quot;::Account5::secondname&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString secondname;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = { inherit, secondname };&lt;/webidl&gt;
+      &lt;Map inherit=&quot;inherit&quot; pattern=&quot;selection&quot;&gt;
+        &lt;PatternAttribute name=&quot;secondname&quot;/&gt;
+      &lt;/Map&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account6&quot; id=&quot;::Account6&quot;&gt;
+    &lt;webidl&gt;interface Account6 : &lt;ref&gt;Account&lt;/ref&gt; {
+  attribute DOMString secondname;
+  serializer = { inherit, attribute };
+};&lt;/webidl&gt;
+    &lt;InterfaceInheritance&gt;
+      &lt;Name name=&quot;Account&quot;/&gt;
+    &lt;/InterfaceInheritance&gt;
+    &lt;Attribute name=&quot;secondname&quot; id=&quot;::Account6::secondname&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString secondname;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = { inherit, attribute };&lt;/webidl&gt;
+      &lt;Map inherit=&quot;inherit&quot; pattern=&quot;all&quot;/&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account7&quot; id=&quot;::Account7&quot;&gt;
+    &lt;webidl&gt;interface Account7 {
+  attribute DOMString name;
+  attribute unsigned long number;
+  serializer = [ name, number ];
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Account7::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;number&quot; id=&quot;::Account7::number&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long number;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = [ name, number ];&lt;/webidl&gt;
+      &lt;List pattern=&quot;selection&quot;&gt;
+        &lt;PatternAttribute name=&quot;name&quot;/&gt;
+        &lt;PatternAttribute name=&quot;number&quot;/&gt;
+      &lt;/List&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Account8&quot; id=&quot;::Account8&quot;&gt;
+    &lt;webidl&gt;interface Account8 {
+  getter object getItem(unsigned long index);
+  serializer = [ getter ];
+};&lt;/webidl&gt;
+    &lt;Operation getter=&quot;getter&quot; name=&quot;getItem&quot; id=&quot;::Account8::getItem&quot;&gt;
+      &lt;webidl&gt;  getter object getItem(unsigned long index);&lt;/webidl&gt;
+      &lt;Type type=&quot;object&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;index&quot;&gt;
+          &lt;Type type=&quot;unsigned long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Serializer&gt;
+      &lt;webidl&gt;  serializer = [ getter ];&lt;/webidl&gt;
+      &lt;List pattern=&quot;getter&quot;/&gt;
+    &lt;/Serializer&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlspecialomittablewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;Interface name=&quot;Dictionary&quot; id=&quot;::Dictionary&quot;&gt;
+    &lt;webidl&gt;interface Dictionary {
+  readonly attribute unsigned long propertyCount;
+
+  omittable getter float getProperty(DOMString propertyName);
+  omittable setter void setProperty(DOMString propertyName, float propertyValue);
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;propertyCount&quot; id=&quot;::Dictionary::propertyCount&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long propertyCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation omittable=&quot;omittable&quot; getter=&quot;getter&quot; name=&quot;getProperty&quot; id=&quot;::Dictionary::getProperty&quot;&gt;
+      &lt;webidl&gt;  omittable getter float getProperty(DOMString propertyName);&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation omittable=&quot;omittable&quot; setter=&quot;setter&quot; name=&quot;setProperty&quot; id=&quot;::Dictionary::setProperty&quot;&gt;
+      &lt;webidl&gt;  omittable setter void setProperty(DOMString propertyName, float propertyValue);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;propertyName&quot;&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;propertyValue&quot;&gt;
+          &lt;Type type=&quot;float&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstaticwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Point {  };
+
+interface Circle {
+  attribute float cx;
+  attribute float cy;
+  attribute float radius;
+
+  static readonly attribute long triangulationCount;
+  static &lt;ref&gt;Point&lt;/ref&gt; triangulate(&lt;ref&gt;Circle&lt;/ref&gt; c1, &lt;ref&gt;Circle&lt;/ref&gt; c2, &lt;ref&gt;Circle&lt;/ref&gt; c3);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Point&quot; id=&quot;::Point&quot;&gt;
+    &lt;webidl&gt;interface Point {  };&lt;/webidl&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Circle&quot; id=&quot;::Circle&quot;&gt;
+    &lt;webidl&gt;interface Circle {
+  attribute float cx;
+  attribute float cy;
+  attribute float radius;
+
+  static readonly attribute long triangulationCount;
+  static &lt;ref&gt;Point&lt;/ref&gt; triangulate(&lt;ref&gt;Circle&lt;/ref&gt; c1, &lt;ref&gt;Circle&lt;/ref&gt; c2, &lt;ref&gt;Circle&lt;/ref&gt; c3);
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;cx&quot; id=&quot;::Circle::cx&quot;&gt;
+      &lt;webidl&gt;  attribute float cx;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;cy&quot; id=&quot;::Circle::cy&quot;&gt;
+      &lt;webidl&gt;  attribute float cy;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;radius&quot; id=&quot;::Circle::radius&quot;&gt;
+      &lt;webidl&gt;  attribute float radius;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute static=&quot;static&quot; readonly=&quot;readonly&quot; name=&quot;triangulationCount&quot; id=&quot;::Circle::triangulationCount&quot;&gt;
+      &lt;webidl&gt;  static readonly attribute long triangulationCount;&lt;/webidl&gt;
+      &lt;Type type=&quot;long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation static=&quot;static&quot; name=&quot;triangulate&quot; id=&quot;::Circle::triangulate&quot;&gt;
+      &lt;webidl&gt;  static &lt;ref&gt;Point&lt;/ref&gt; triangulate(&lt;ref&gt;Circle&lt;/ref&gt; c1, &lt;ref&gt;Circle&lt;/ref&gt; c2, &lt;ref&gt;Circle&lt;/ref&gt; c3);&lt;/webidl&gt;
+      &lt;Type name=&quot;Point&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;c1&quot;&gt;
+          &lt;Type name=&quot;Circle&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;c2&quot;&gt;
+          &lt;Type name=&quot;Circle&quot;/&gt;
+        &lt;/Argument&gt;
+        &lt;Argument name=&quot;c3&quot;&gt;
+          &lt;Type name=&quot;Circle&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstringifierattributewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[Constructor]
+interface Student {
+  attribute unsigned long id;
+  stringifier attribute DOMString name;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Student&quot; id=&quot;::Student&quot;&gt;
+    &lt;webidl&gt;[Constructor]
+interface Student {
+  attribute unsigned long id;
+  stringifier attribute DOMString name;
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;Constructor&quot;&gt;
+        &lt;webidl&gt;Constructor&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Attribute name=&quot;id&quot; id=&quot;::Student::id&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long id;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute stringifier=&quot;stringifier&quot; name=&quot;name&quot; id=&quot;::Student::name&quot;&gt;
+      &lt;webidl&gt;  stringifier attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstringifiercustomwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;[Constructor]
+interface Student {
+  attribute unsigned long id;
+  attribute DOMString? familyName;
+  attribute DOMString givenName;
+
+  stringifier DOMString ();
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Student&quot; id=&quot;::Student&quot;&gt;
+    &lt;webidl&gt;[Constructor]
+interface Student {
+  attribute unsigned long id;
+  attribute DOMString? familyName;
+  attribute DOMString givenName;
+
+  stringifier DOMString ();
+};&lt;/webidl&gt;
+    &lt;ExtendedAttributeList&gt;
+      &lt;ExtendedAttribute name=&quot;Constructor&quot;&gt;
+        &lt;webidl&gt;Constructor&lt;/webidl&gt;
+      &lt;/ExtendedAttribute&gt;
+    &lt;/ExtendedAttributeList&gt;
+    &lt;Attribute name=&quot;id&quot; id=&quot;::Student::id&quot;&gt;
+      &lt;webidl&gt;  attribute unsigned long id;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;familyName&quot; id=&quot;::Student::familyName&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString? familyName;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot; nullable=&quot;nullable&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;givenName&quot; id=&quot;::Student::givenName&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString givenName;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation stringifier=&quot;stringifier&quot;&gt;
+      &lt;webidl&gt;  stringifier DOMString ();&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlstringifierwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface A {
+  stringifier DOMString ();
+};
+
+interface A {
+  stringifier;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;A&quot; id=&quot;::A&quot;&gt;
+    &lt;webidl&gt;interface A {
+  stringifier DOMString ();
+};&lt;/webidl&gt;
+    &lt;Operation stringifier=&quot;stringifier&quot;&gt;
+      &lt;webidl&gt;  stringifier DOMString ();&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+      &lt;ArgumentList/&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;A&quot; id=&quot;::A&quot;&gt;
+    &lt;webidl&gt;interface A {
+  stringifier;
+};&lt;/webidl&gt;
+    &lt;Stringifier&gt;
+      &lt;webidl&gt;  stringifier;&lt;/webidl&gt;
+    &lt;/Stringifier&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltreatasnullwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Dog {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatNullAs=EmptyString] DOMString breedName);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Dog&quot; id=&quot;::Dog&quot;&gt;
+    &lt;webidl&gt;interface Dog {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatNullAs=EmptyString] DOMString breedName);
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Dog::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;owner&quot; id=&quot;::Dog::owner&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString owner;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;isMemberOfBreed&quot; id=&quot;::Dog::isMemberOfBreed&quot;&gt;
+      &lt;webidl&gt;  boolean isMemberOfBreed([TreatNullAs=EmptyString] DOMString breedName);&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;breedName&quot;&gt;
+          &lt;ExtendedAttributeList&gt;
+            &lt;ExtendedAttribute name=&quot;TreatNullAs&quot; value=&quot;EmptyString&quot;&gt;
+              &lt;webidl&gt;TreatNullAs&lt;/webidl&gt;
+            &lt;/ExtendedAttribute&gt;
+          &lt;/ExtendedAttributeList&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltreatasundefinedwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Cat {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatUndefinedAs=EmptyString] DOMString breedName);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Cat&quot; id=&quot;::Cat&quot;&gt;
+    &lt;webidl&gt;interface Cat {
+  attribute DOMString name;
+  attribute DOMString owner;
+
+  boolean isMemberOfBreed([TreatUndefinedAs=EmptyString] DOMString breedName);
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;name&quot; id=&quot;::Cat::name&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString name;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;owner&quot; id=&quot;::Cat::owner&quot;&gt;
+      &lt;webidl&gt;  attribute DOMString owner;&lt;/webidl&gt;
+      &lt;Type type=&quot;DOMString&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;isMemberOfBreed&quot; id=&quot;::Cat::isMemberOfBreed&quot;&gt;
+      &lt;webidl&gt;  boolean isMemberOfBreed([TreatUndefinedAs=EmptyString] DOMString breedName);&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;breedName&quot;&gt;
+          &lt;ExtendedAttributeList&gt;
+            &lt;ExtendedAttribute name=&quot;TreatUndefinedAs&quot; value=&quot;EmptyString&quot;&gt;
+              &lt;webidl&gt;TreatUndefinedAs&lt;/webidl&gt;
+            &lt;/ExtendedAttribute&gt;
+          &lt;/ExtendedAttributeList&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltypedefwidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;      interface Point {
+        attribute float x;
+        attribute float y;
+      };
+
+      typedef sequence&amp;lt;&lt;ref&gt;Point&lt;/ref&gt;&gt; PointSequence;
+
+      interface Rect {
+        attribute &lt;ref&gt;Point&lt;/ref&gt; topleft;
+        attribute &lt;ref&gt;Point&lt;/ref&gt; bottomright;
+      };
+
+  interface Widget {
+
+    readonly attribute &lt;ref&gt;Rect&lt;/ref&gt; bounds;
+
+    boolean pointWithinBounds(&lt;ref&gt;Point&lt;/ref&gt; p);
+    boolean allPointsWithinBounds(&lt;ref&gt;PointSequence&lt;/ref&gt; ps);
+  };
+
+  typedef [Clamp] octet value;&lt;/webidl&gt;
+  &lt;Interface name=&quot;Point&quot; id=&quot;::Point&quot;&gt;
+    &lt;webidl&gt;      interface Point {
+        attribute float x;
+        attribute float y;
+      };&lt;/webidl&gt;
+    &lt;Attribute name=&quot;x&quot; id=&quot;::Point::x&quot;&gt;
+      &lt;webidl&gt;        attribute float x;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;y&quot; id=&quot;::Point::y&quot;&gt;
+      &lt;webidl&gt;        attribute float y;&lt;/webidl&gt;
+      &lt;Type type=&quot;float&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Typedef name=&quot;PointSequence&quot; id=&quot;::PointSequence&quot;&gt;
+    &lt;webidl&gt;      typedef sequence&amp;lt;&lt;ref&gt;Point&lt;/ref&gt;&gt; PointSequence;&lt;/webidl&gt;
+    &lt;Type type=&quot;sequence&quot;&gt;
+      &lt;Type name=&quot;Point&quot;/&gt;
+    &lt;/Type&gt;
+  &lt;/Typedef&gt;
+  &lt;Interface name=&quot;Rect&quot; id=&quot;::Rect&quot;&gt;
+    &lt;webidl&gt;      interface Rect {
+        attribute &lt;ref&gt;Point&lt;/ref&gt; topleft;
+        attribute &lt;ref&gt;Point&lt;/ref&gt; bottomright;
+      };&lt;/webidl&gt;
+    &lt;Attribute name=&quot;topleft&quot; id=&quot;::Rect::topleft&quot;&gt;
+      &lt;webidl&gt;        attribute &lt;ref&gt;Point&lt;/ref&gt; topleft;&lt;/webidl&gt;
+      &lt;Type name=&quot;Point&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Attribute name=&quot;bottomright&quot; id=&quot;::Rect::bottomright&quot;&gt;
+      &lt;webidl&gt;        attribute &lt;ref&gt;Point&lt;/ref&gt; bottomright;&lt;/webidl&gt;
+      &lt;Type name=&quot;Point&quot;/&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+  &lt;Interface name=&quot;Widget&quot; id=&quot;::Widget&quot;&gt;
+    &lt;webidl&gt;  interface Widget {
+
+    readonly attribute &lt;ref&gt;Rect&lt;/ref&gt; bounds;
+
+    boolean pointWithinBounds(&lt;ref&gt;Point&lt;/ref&gt; p);
+    boolean allPointsWithinBounds(&lt;ref&gt;PointSequence&lt;/ref&gt; ps);
+  };&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;bounds&quot; id=&quot;::Widget::bounds&quot;&gt;
+      &lt;webidl&gt;    readonly attribute &lt;ref&gt;Rect&lt;/ref&gt; bounds;&lt;/webidl&gt;
+      &lt;Type name=&quot;Rect&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;pointWithinBounds&quot; id=&quot;::Widget::pointWithinBounds&quot;&gt;
+      &lt;webidl&gt;    boolean pointWithinBounds(&lt;ref&gt;Point&lt;/ref&gt; p);&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;p&quot;&gt;
+          &lt;Type name=&quot;Point&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;allPointsWithinBounds&quot; id=&quot;::Widget::allPointsWithinBounds&quot;&gt;
+      &lt;webidl&gt;    boolean allPointsWithinBounds(&lt;ref&gt;PointSequence&lt;/ref&gt; ps);&lt;/webidl&gt;
+      &lt;Type type=&quot;boolean&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;ps&quot;&gt;
+          &lt;Type name=&quot;PointSequence&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+  &lt;Typedef name=&quot;value&quot; id=&quot;::value&quot;&gt;
+    &lt;webidl&gt;  typedef [Clamp] octet value;&lt;/webidl&gt;
+    &lt;Type type=&quot;octet&quot;&gt;
+      &lt;ExtendedAttributeList&gt;
+        &lt;ExtendedAttribute name=&quot;Clamp&quot;&gt;
+          &lt;webidl&gt;Clamp&lt;/webidl&gt;
+        &lt;/ExtendedAttribute&gt;
+      &lt;/ExtendedAttributeList&gt;
+    &lt;/Type&gt;
+  &lt;/Typedef&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmltypesuffixeswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Suffixes {
+  void test(sequence&amp;lt;DOMString[]?&gt;? foo);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Suffixes&quot; id=&quot;::Suffixes&quot;&gt;
+    &lt;webidl&gt;interface Suffixes {
+  void test(sequence&amp;lt;DOMString[]?&gt;? foo);
+};&lt;/webidl&gt;
+    &lt;Operation name=&quot;test&quot; id=&quot;::Suffixes::test&quot;&gt;
+      &lt;webidl&gt;  void test(sequence&amp;lt;DOMString[]?&gt;? foo);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument name=&quot;foo&quot;&gt;
+          &lt;Type type=&quot;sequence&quot; nullable=&quot;nullable&quot;&gt;
+            &lt;Type type=&quot;array&quot; nullable=&quot;nullable&quot;&gt;
+              &lt;Type type=&quot;DOMString&quot;/&gt;
+            &lt;/Type&gt;
+          &lt;/Type&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmluniontypewidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface Union {
+ attribute (float or (Date or &lt;ref&gt;Event&lt;/ref&gt;) or (&lt;ref&gt;Node&lt;/ref&gt; or DOMString)?) test;
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;Union&quot; id=&quot;::Union&quot;&gt;
+    &lt;webidl&gt;interface Union {
+ attribute (float or (Date or &lt;ref&gt;Event&lt;/ref&gt;) or (&lt;ref&gt;Node&lt;/ref&gt; or DOMString)?) test;
+};&lt;/webidl&gt;
+    &lt;Attribute name=&quot;test&quot; id=&quot;::Union::test&quot;&gt;
+      &lt;webidl&gt; attribute (float or (Date or &lt;ref&gt;Event&lt;/ref&gt;) or (&lt;ref&gt;Node&lt;/ref&gt; or DOMString)?) test;&lt;/webidl&gt;
+      &lt;Type type=&quot;union&quot;&gt;
+        &lt;Type type=&quot;float&quot;/&gt;
+        &lt;Type type=&quot;union&quot;&gt;
+          &lt;Type type=&quot;Date&quot;/&gt;
+          &lt;Type name=&quot;Event&quot;/&gt;
+        &lt;/Type&gt;
+        &lt;Type type=&quot;union&quot; nullable=&quot;nullable&quot;&gt;
+          &lt;Type name=&quot;Node&quot;/&gt;
+          &lt;Type type=&quot;DOMString&quot;/&gt;
+        &lt;/Type&gt;
+      &lt;/Type&gt;
+    &lt;/Attribute&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlvariadicoperationswidlprocxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE Definitions SYSTEM &quot;widlprocxml.dtd&quot;&gt;
+&lt;Definitions&gt;
+  &lt;webidl&gt;interface IntegerSet {
+  readonly attribute unsigned long cardinality;
+
+  void union(long... ints);
+  void intersection(long... ints);
+};&lt;/webidl&gt;
+  &lt;Interface name=&quot;IntegerSet&quot; id=&quot;::IntegerSet&quot;&gt;
+    &lt;webidl&gt;interface IntegerSet {
+  readonly attribute unsigned long cardinality;
+
+  void union(long... ints);
+  void intersection(long... ints);
+};&lt;/webidl&gt;
+    &lt;Attribute readonly=&quot;readonly&quot; name=&quot;cardinality&quot; id=&quot;::IntegerSet::cardinality&quot;&gt;
+      &lt;webidl&gt;  readonly attribute unsigned long cardinality;&lt;/webidl&gt;
+      &lt;Type type=&quot;unsigned long&quot;/&gt;
+    &lt;/Attribute&gt;
+    &lt;Operation name=&quot;union&quot; id=&quot;::IntegerSet::union&quot;&gt;
+      &lt;webidl&gt;  void union(long... ints);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument ellipsis=&quot;ellipsis&quot; name=&quot;ints&quot;&gt;
+          &lt;Type type=&quot;long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+    &lt;Operation name=&quot;intersection&quot; id=&quot;::IntegerSet::intersection&quot;&gt;
+      &lt;webidl&gt;  void intersection(long... ints);&lt;/webidl&gt;
+      &lt;Type type=&quot;void&quot;/&gt;
+      &lt;ArgumentList&gt;
+        &lt;Argument ellipsis=&quot;ellipsis&quot; name=&quot;ints&quot;&gt;
+          &lt;Type type=&quot;long&quot;/&gt;
+        &lt;/Argument&gt;
+      &lt;/ArgumentList&gt;
+    &lt;/Operation&gt;
+  &lt;/Interface&gt;
+&lt;/Definitions&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestvalidxmlw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,67 @@
</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/resources/webidl2/test/widlproc/test/valid/xml/allowany.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/array.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/attributes.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/callback.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/caller.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constants.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/constructor.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary-inherits.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/dictionary.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation-dos.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/documentation.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/enum.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/equivalent-decl.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception-inheritance.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/exception.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/getter-setter.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/identifier-qualified-names.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/implements.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/indexed-properties.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/inherits-getter.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/interface-inherits.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/iterator.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/module.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namedconstructor.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/namespaceobject.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nointerfaceobject.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullable.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/nullableobjects.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/operation-optional-arg.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overloading.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/overridebuiltins.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/partial-interface.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/primitives.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/prototyperoot.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/putforwards.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/reg-operations.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/replaceable.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/sequence.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/serializer.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/special-omittable.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/static.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-attribute.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier-custom.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/stringifier.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasnull.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/treatasundefined.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typedef.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/typesuffixes.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/uniontype.widlprocxml
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/valid/xml/variadic-operations.widlprocxml
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlproctestw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/test/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</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/resources/webidl2/test/widlproc/test/Makefile
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2testwidlprocw3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,20 @@
</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/resources/webidl2/test/widlproc/LICENSE
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/Makefile
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/test/widlproc/README.md
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsresourceswebidl2w3cimportlog"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/w3c-import.log (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/w3c-import.log                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</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/resources/webidl2/LICENSE
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/README.md
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/coverage.html
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/index.js
+/LayoutTests/imported/w3c/web-platform-tests/resources/webidl2/package.json
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -25,4 +25,5 @@
</span><span class="cx"> 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
</span><span class="cx"> PASS Closing must be propagated forward: becomes closed after one chunk; preventClose = true 
</span><span class="cx"> 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
</span><ins>+PASS Closing must be propagated forward: shutdown must not occur until the final write completes; preventClose = true 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwarddedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.dedicatedworker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -25,4 +25,5 @@
</span><span class="cx"> FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; rejected close promise Can't find variable: WritableStream
</span><span class="cx"> FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose = true Can't find variable: WritableStream
</span><span class="cx"> FAIL Closing must be propagated forward: shutdown must not occur until the final write completes Can't find variable: WritableStream
</span><ins>+FAIL Closing must be propagated forward: shutdown must not occur until the final write completes; preventClose = true Can't find variable: WritableStream
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingclosepropagationforwardjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -424,4 +424,38 @@
</span><span class="cx"> 
</span><span class="cx"> }, 'Closing must be propagated forward: shutdown must not occur until the final write completes');
</span><span class="cx"> 
</span><ins>+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, { preventClose: true }).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'],
+      'the chunk must have been written, but close must not have happened yet');
+    assert_equals(pipeComplete, false, 'the pipe must not be complete');
+
+    resolveWritePromise();
+
+    return pipePromise;
+  });
+
+}, 'Closing must be propagated forward: shutdown must not occur until the final write completes; preventClose = true');
+
</ins><span class="cx"> done();
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontrolexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,5 +2,6 @@
</span><span class="cx"> 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;
</span><span class="cx"> 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)
</span><span class="cx"> 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)
</span><ins>+FAIL Piping from a ReadableStream to a WritableStream that desires more chunks before finishing with previous ones ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
</ins><span class="cx"> 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
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroldedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.dedicatedworker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -2,5 +2,6 @@
</span><span class="cx"> FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks Can't find variable: WritableStream
</span><span class="cx"> FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks, but then does Can't find variable: WritableStream
</span><span class="cx"> 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
</span><ins>+FAIL Piping from a ReadableStream to a WritableStream that desires more chunks before finishing with previous ones Can't find variable: WritableStream
</ins><span class="cx"> FAIL Piping to a WritableStream that does not consume the writes fast enough exerts backpressure on the ReadableStream Can't find variable: WritableStream
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingflowcontroljs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -125,7 +125,53 @@
</span><span class="cx">    'stream becomes non-empty and the writable stream starts desiring chunks');
</span><span class="cx"> 
</span><span class="cx"> promise_test(() =&gt; {
</span><ins>+  const unreadChunks = ['b', 'c', 'd'];
</ins><span class="cx"> 
</span><ins>+  const rs = recordingReadableStream({
+    pull(controller) {
+      controller.enqueue(unreadChunks.shift());
+      if (unreadChunks.length === 0) {
+        controller.close();
+      }
+    }
+  }, new CountQueuingStrategy({ highWaterMark: 0 }));
+
+  let resolveWritePromise;
+  const ws = recordingWritableStream({
+    write() {
+      if (!resolveWritePromise) {
+        // first write
+        return new Promise(resolve =&gt; {
+          resolveWritePromise = resolve;
+        });
+      }
+      return undefined;
+    }
+  }, new CountQueuingStrategy({ highWaterMark: 3 }));
+
+  const writer = ws.getWriter();
+  const firstWritePromise = writer.write('a');
+  assert_equals(writer.desiredSize, 2, 'after writing the writer\'s desiredSize must be 2');
+  writer.releaseLock();
+
+  // firstWritePromise won't settle until we call resolveWritePromise.
+
+  const pipePromise = rs.pipeTo(ws);
+
+  return flushAsyncEvents().then(() =&gt; {
+    assert_array_equals(ws.events, ['write', 'a']);
+    assert_equals(unreadChunks.length, 1, 'chunks should continue to be enqueued until the HWM is reached');
+  }).then(() =&gt; resolveWritePromise())
+    .then(() =&gt; Promise.all([firstWritePromise, pipePromise]))
+    .then(() =&gt; {
+      assert_array_equals(rs.events, ['pull', 'pull', 'pull']);
+      assert_array_equals(ws.events, ['write', 'a', 'write', 'b','write', 'c','write', 'd', 'close']);
+    });
+
+}, 'Piping from a ReadableStream to a WritableStream that desires more chunks before finishing with previous ones');
+
+promise_test(() =&gt; {
+
</ins><span class="cx">   const desiredSizes = [];
</span><span class="cx">   const rs = recordingReadableStream({
</span><span class="cx">     start(controller) {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> 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)
</span><span class="cx"> 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)
</span><ins>+FAIL Piping from an errored readable stream to a closing writable stream ws.getWriter is not a function. (In 'ws.getWriter()', 'ws.getWriter' is undefined)
</ins><span class="cx"> 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)
</span><span class="cx"> 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)
</span><span class="cx"> 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)
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationdedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.dedicatedworker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> FAIL Piping from an errored readable stream to an errored writable stream Can't find variable: WritableStream
</span><span class="cx"> FAIL Piping from an errored readable stream to an errored writable stream; preventAbort = true Can't find variable: WritableStream
</span><ins>+FAIL Piping from an errored readable stream to a closing writable stream Can't find variable: WritableStream
</ins><span class="cx"> FAIL Piping from an errored readable stream to a closed writable stream Can't find variable: WritableStream
</span><span class="cx"> FAIL Piping from a closed readable stream to an errored writable stream Can't find variable: WritableStream
</span><span class="cx"> FAIL Piping from a closed readable stream to a closed writable stream Can't find variable: WritableStream
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingmultiplepropagationjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -71,19 +71,48 @@
</span><span class="cx">   });
</span><span class="cx">   const ws = recordingWritableStream();
</span><span class="cx">   const writer = ws.getWriter();
</span><del>-  writer.close();
</del><ins>+  const closePromise = writer.close();
</ins><span class="cx">   writer.releaseLock();
</span><span class="cx"> 
</span><span class="cx">   return promise_rejects(t, error1, rs.pipeTo(ws), 'pipeTo must reject with the readable stream\'s error').then(() =&gt; {
</span><span class="cx">     assert_array_equals(rs.events, []);
</span><del>-    assert_array_equals(ws.events, ['close']);
</del><ins>+    assert_array_equals(ws.events, ['abort', error1]);
</ins><span class="cx"> 
</span><span class="cx">     return Promise.all([
</span><span class="cx">       promise_rejects(t, error1, rs.getReader().closed, 'the readable stream must be errored with error1'),
</span><del>-      ws.getWriter().closed
</del><ins>+      promise_rejects(t, new TypeError(), ws.getWriter().closed,
+        'closed must reject with a TypeError indicating the writable stream was aborted'),
+      promise_rejects(t, new TypeError(), closePromise,
+        'close() must reject with a TypeError indicating the writable stream was aborted'),
</ins><span class="cx">     ]);
</span><span class="cx">   });
</span><span class="cx"> 
</span><ins>+}, 'Piping from an errored readable stream to a closing writable stream');
+
+promise_test(t =&gt; {
+  const rs = recordingReadableStream({
+    start(c) {
+      c.error(error1);
+    }
+  });
+  const ws = recordingWritableStream();
+  const writer = ws.getWriter();
+  const closePromise = writer.close();
+  writer.releaseLock();
+
+  return flushAsyncEvents().then(() =&gt; {
+    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,
+        closePromise
+      ]);
+    });
+  });
+
</ins><span class="cx"> }, 'Piping from an errored readable stream to a closed writable stream');
</span><span class="cx"> 
</span><span class="cx"> promise_test(t =&gt; {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -4,4 +4,5 @@
</span><span class="cx"> PASS pipeThrough generically calls pipeTo with the appropriate args 
</span><span class="cx"> PASS pipeThrough can handle calling a pipeTo that returns a non-promise object 
</span><span class="cx"> PASS pipeThrough can handle calling a pipeTo that returns a non-promise thenable object 
</span><ins>+PASS pipeThrough should mark a real promise from a fake readable as handled 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughdedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.dedicatedworker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -4,4 +4,5 @@
</span><span class="cx"> PASS pipeThrough generically calls pipeTo with the appropriate args 
</span><span class="cx"> PASS pipeThrough can handle calling a pipeTo that returns a non-promise object 
</span><span class="cx"> PASS pipeThrough can handle calling a pipeTo that returns a non-promise thenable object 
</span><ins>+PASS pipeThrough should mark a real promise from a fake readable as handled 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamspipingpipethroughjs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -104,4 +104,18 @@
</span><span class="cx"> 
</span><span class="cx"> }, 'pipeThrough can handle calling a pipeTo that returns a non-promise thenable object');
</span><span class="cx"> 
</span><ins>+promise_test(() =&gt; {
+  const dummy = {
+    pipeTo() {
+      return Promise.reject(new Error('this rejection should not be reported as unhandled'));
+    }
+  };
+
+  ReadableStream.prototype.pipeThrough.call(dummy, { });
+
+  // The test harness should complain about unhandled rejections by then.
+  return flushAsyncEvents();
+
+}, 'pipeThrough should mark a real promise from a fake readable as handled');
+
</ins><span class="cx"> done();
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneralexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS getReader({mode: &quot;byob&quot;}) throws on non-bytes streams 
</span><del>-PASS ReadableStream with byte source can be constructed with no errors 
</del><ins>+FAIL ReadableStream with byte source can be constructed with no errors ReadableStreamBYOBReader is not implemented
+FAIL getReader({mode}) must perform ToString() ReadableStreamBYOBReader is not implemented
</ins><span class="cx"> PASS ReadableStream with byte source: Construct and expect start and pull being called 
</span><span class="cx"> PASS ReadableStream with byte source: No automatic pull call if start doesn't finish 
</span><span class="cx"> PASS ReadableStream with byte source: Construct with highWaterMark of 0 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraldedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.dedicatedworker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> 
</span><span class="cx"> PASS getReader({mode: &quot;byob&quot;}) throws on non-bytes streams 
</span><del>-PASS ReadableStream with byte source can be constructed with no errors 
</del><ins>+FAIL ReadableStream with byte source can be constructed with no errors ReadableStreamBYOBReader is not implemented
+FAIL getReader({mode}) must perform ToString() ReadableStreamBYOBReader is not implemented
</ins><span class="cx"> PASS ReadableStream with byte source: Construct and expect start and pull being called 
</span><span class="cx"> PASS ReadableStream with byte source: No automatic pull call if start doesn't finish 
</span><span class="cx"> PASS ReadableStream with byte source: Construct with highWaterMark of 0 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablebytestreamsgeneraljs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,9 +15,30 @@
</span><span class="cx"> 
</span><span class="cx"> test(() =&gt; {
</span><span class="cx">   // Constructing ReadableStream with an empty underlying byte source object as parameter shouldn't throw.
</span><del>-  new ReadableStream({ type: 'bytes' });
</del><ins>+  new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' });
+  // Constructor must perform ToString(type).
+  new ReadableStream({ type: { toString() {return 'bytes';} } })
+    .getReader({ mode: 'byob' });
+  new ReadableStream({ type: { toString: null, valueOf() {return 'bytes';} } })
+    .getReader({ mode: 'byob' });
</ins><span class="cx"> }, 'ReadableStream with byte source can be constructed with no errors');
</span><span class="cx"> 
</span><ins>+test(() =&gt; {
+  const ReadableStreamBYOBReader = new ReadableStream({ type: 'bytes' }).getReader({ mode: 'byob' }).constructor;
+  const rs = new ReadableStream({ type: 'bytes' });
+
+  let reader = rs.getReader({ mode: { toString() { return 'byob'; } } });
+  assert_true(reader instanceof ReadableStreamBYOBReader, 'must give a BYOB reader');
+  reader.releaseLock();
+
+  reader = rs.getReader({ mode: { toString: null, valueOf() {return 'byob';} } });
+  assert_true(reader instanceof ReadableStreamBYOBReader, 'must give a BYOB reader');
+  reader.releaseLock();
+
+  reader = rs.getReader({ mode: 'byob', notmode: 'ignored' });
+  assert_true(reader instanceof ReadableStreamBYOBReader, 'must give a BYOB reader');
+}, 'getReader({mode}) must perform ToString()');
+
</ins><span class="cx"> promise_test(() =&gt; {
</span><span class="cx">   let startCalled = false;
</span><span class="cx">   let startCalledBeforePull = false;
</span></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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx"> PASS ReadableStream constructor can get initial garbage as pull argument 
</span><span class="cx"> PASS ReadableStream start should be called with the proper parameters 
</span><span class="cx"> PASS ReadableStream start controller parameter should be extensible 
</span><ins>+PASS default ReadableStream getReader() should only accept mode:undefined 
</ins><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="cx"> PASS ReadableStream start should be able to return a promise and reject it 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraldedicatedworkerexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.dedicatedworker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -8,6 +8,7 @@
</span><span class="cx"> PASS ReadableStream constructor can get initial garbage as pull argument 
</span><span class="cx"> PASS ReadableStream start should be called with the proper parameters 
</span><span class="cx"> PASS ReadableStream start controller parameter should be extensible 
</span><ins>+PASS default ReadableStream getReader() should only accept mode:undefined 
</ins><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="cx"> PASS ReadableStream start should be able to return a promise and reject it 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsstreamsreadablestreamsgeneraljs"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.js (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -6,6 +6,9 @@
</span><span class="cx">   self.importScripts('/resources/testharness.js');
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const error1 = new Error('error1');
+error1.name = 'error1';
+
</ins><span class="cx"> test(() =&gt; {
</span><span class="cx"> 
</span><span class="cx">   new ReadableStream(); // ReadableStream constructed with no parameters
</span><span class="lines">@@ -32,6 +35,8 @@
</span><span class="cx">     'constructor should throw when the type is empty string');
</span><span class="cx">   assert_throws(new RangeError(), () =&gt; new ReadableStream({ type: 'asdf' }),
</span><span class="cx">     'constructor should throw when the type is asdf');
</span><ins>+  assert_throws(error1, () =&gt; new ReadableStream({ type: { get toString() {throw error1;} } }), 'constructor should throw when ToString() throws');
+  assert_throws(error1, () =&gt; new ReadableStream({ type: { toString() {throw error1;} } }), 'constructor should throw when ToString() throws');
</ins><span class="cx"> 
</span><span class="cx"> }, 'ReadableStream can\'t be constructed with an invalid type');
</span><span class="cx"> 
</span><span class="lines">@@ -157,6 +162,13 @@
</span><span class="cx"> 
</span><span class="cx"> }, 'ReadableStream start controller parameter should be extensible');
</span><span class="cx"> 
</span><ins>+test(() =&gt; {
+  (new ReadableStream()).getReader(undefined);
+  (new ReadableStream()).getReader({});
+  (new ReadableStream()).getReader({ mode: undefined, notmode: 'ignored' });
+  assert_throws(new RangeError(), () =&gt; (new ReadableStream()).getReader({ mode: 'potato' }));
+}, 'default ReadableStream getReader() should only accept mode:undefined');
+
</ins><span class="cx"> promise_test(() =&gt; {
</span><span class="cx"> 
</span><span class="cx">   function SimpleStreamSource() {}
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx"> /c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://f:fifty-two/c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://f:999999/c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><ins>+PASS Parsing: &lt;non-special://f:999999/c&gt; against &lt;http://example.org/foo/bar&gt; 
</ins><span class="cx"> FAIL Parsing: &lt;http://f: 21 / b ? d # e &gt; against &lt;http://example.org/foo/bar&gt; assert_equals: failure should set href to input expected &quot;http://f: 21 / b ? d # e &quot; but got &quot;http://f: 21 / b ? d # e&quot;
</span><span class="cx"> PASS Parsing: &lt;&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;          &gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="lines">@@ -404,6 +405,28 @@
</span><span class="cx"> PASS Parsing: &lt;file:?x&gt; against &lt;file:///test?test#test&gt; 
</span><span class="cx"> PASS Parsing: &lt;#x&gt; against &lt;file:///test?test#test&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:#x&gt; against &lt;file:///test?test#test&gt; 
</span><ins>+FAIL Parsing: &lt;file:\\//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+FAIL Parsing: &lt;file:\\\\&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+FAIL Parsing: &lt;file:\\\\?fox&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///?fox&quot; but got &quot;file:////?fox&quot;
+FAIL Parsing: &lt;file:\\\\#guppy&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///#guppy&quot; but got &quot;file:////#guppy&quot;
+FAIL Parsing: &lt;file://spider///&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file://spider/&quot; but got &quot;file://spider///&quot;
+FAIL Parsing: &lt;file:\\localhost//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+PASS Parsing: &lt;file:///localhost//cat&gt; against &lt;about:blank&gt; 
+FAIL Parsing: &lt;file://\/localhost//cat&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///localhost//cat&quot; but got &quot;file:////localhost//cat&quot;
+FAIL Parsing: &lt;file://localhost//a//../..//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file://///&quot;
+FAIL Parsing: &lt;/////mouse&gt; against &lt;file:///elephant&gt; assert_equals: href expected &quot;file:///mouse&quot; but got &quot;file://///mouse&quot;
+PASS Parsing: &lt;\//pig&gt; against &lt;file://lion/&gt; 
+FAIL Parsing: &lt;\/localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file:///pig&quot; but got &quot;file:////pig&quot;
+FAIL Parsing: &lt;//localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file:///pig&quot; but got &quot;file:////pig&quot;
+FAIL Parsing: &lt;/..//localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file://lion/localhost//pig&quot; but got &quot;file:////localhost//pig&quot;
+PASS Parsing: &lt;file://&gt; against &lt;file://ape/&gt; 
+FAIL Parsing: &lt;/rooibos&gt; against &lt;file://tea/&gt; assert_equals: href expected &quot;file://tea/rooibos&quot; but got &quot;file:///rooibos&quot;
+FAIL Parsing: &lt;/?chai&gt; against &lt;file://tea/&gt; assert_equals: href expected &quot;file://tea/?chai&quot; but got &quot;file:///?chai&quot;
+FAIL Parsing: &lt;file://example.net/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://example.net/C:/&quot;
+FAIL Parsing: &lt;file://1.2.3.4/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://1.2.3.4/C:/&quot;
+FAIL Parsing: &lt;file://[1::8]/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://[1::8]/C:/&quot;
+PASS Parsing: &lt;file:/C|/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://C|/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;file:&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:?q=v&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:#frag&gt; against &lt;about:blank&gt; 
</span></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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -24,6 +24,7 @@
</span><span class="cx"> /c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://f:fifty-two/c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://f:999999/c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><ins>+PASS Parsing: &lt;non-special://f:999999/c&gt; against &lt;http://example.org/foo/bar&gt; 
</ins><span class="cx"> FAIL Parsing: &lt;http://f: 21 / b ? d # e &gt; against &lt;http://example.org/foo/bar&gt; assert_equals: failure should set href to input expected &quot;http://f: 21 / b ? d # e &quot; but got &quot;http://f: 21 / b ? d # e&quot;
</span><span class="cx"> PASS Parsing: &lt;&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;          &gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="lines">@@ -404,6 +405,28 @@
</span><span class="cx"> PASS Parsing: &lt;file:?x&gt; against &lt;file:///test?test#test&gt; 
</span><span class="cx"> PASS Parsing: &lt;#x&gt; against &lt;file:///test?test#test&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:#x&gt; against &lt;file:///test?test#test&gt; 
</span><ins>+FAIL Parsing: &lt;file:\\//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+FAIL Parsing: &lt;file:\\\\&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+FAIL Parsing: &lt;file:\\\\?fox&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///?fox&quot; but got &quot;file:////?fox&quot;
+FAIL Parsing: &lt;file:\\\\#guppy&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///#guppy&quot; but got &quot;file:////#guppy&quot;
+FAIL Parsing: &lt;file://spider///&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file://spider/&quot; but got &quot;file://spider///&quot;
+FAIL Parsing: &lt;file:\\localhost//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+PASS Parsing: &lt;file:///localhost//cat&gt; against &lt;about:blank&gt; 
+FAIL Parsing: &lt;file://\/localhost//cat&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///localhost//cat&quot; but got &quot;file:////localhost//cat&quot;
+FAIL Parsing: &lt;file://localhost//a//../..//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file://///&quot;
+FAIL Parsing: &lt;/////mouse&gt; against &lt;file:///elephant&gt; assert_equals: href expected &quot;file:///mouse&quot; but got &quot;file://///mouse&quot;
+PASS Parsing: &lt;\//pig&gt; against &lt;file://lion/&gt; 
+FAIL Parsing: &lt;\/localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file:///pig&quot; but got &quot;file:////pig&quot;
+FAIL Parsing: &lt;//localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file:///pig&quot; but got &quot;file:////pig&quot;
+FAIL Parsing: &lt;/..//localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file://lion/localhost//pig&quot; but got &quot;file:////localhost//pig&quot;
+PASS Parsing: &lt;file://&gt; against &lt;file://ape/&gt; 
+FAIL Parsing: &lt;/rooibos&gt; against &lt;file://tea/&gt; assert_equals: href expected &quot;file://tea/rooibos&quot; but got &quot;file:///rooibos&quot;
+FAIL Parsing: &lt;/?chai&gt; against &lt;file://tea/&gt; assert_equals: href expected &quot;file://tea/?chai&quot; but got &quot;file:///?chai&quot;
+FAIL Parsing: &lt;file://example.net/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://example.net/C:/&quot;
+FAIL Parsing: &lt;file://1.2.3.4/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://1.2.3.4/C:/&quot;
+FAIL Parsing: &lt;file://[1::8]/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://[1::8]/C:/&quot;
+PASS Parsing: &lt;file:/C|/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://C|/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;file:&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:?q=v&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:#frag&gt; against &lt;about:blank&gt; 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlinterfacesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/interfaces-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/interfaces-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/interfaces-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -47,9 +47,9 @@
</span><span class="cx"> PASS URLSearchParams interface: operation has(USVString) 
</span><span class="cx"> PASS URLSearchParams interface: operation set(USVString,USVString) 
</span><span class="cx"> 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;
</span><del>-FAIL Testing pair iterable interface URLSearchParams assert_equals: entries method is not the same as @@iterator expected function &quot;function entries() {
</del><ins>+FAIL Testing pair iterable interface URLSearchParams assert_equals: entries method is not the same as @@iterator expected function &quot;function [Symbol.Iterator]() {
</ins><span class="cx">     [native code]
</span><del>-}&quot; but got function &quot;function [Symbol.Iterator]() {
</del><ins>+}&quot; but got function &quot;function entries() {
</ins><span class="cx">     [native code]
</span><span class="cx"> }&quot;
</span><span class="cx"> PASS URLSearchParams interface: stringifier 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlsetters_testsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -110,6 +110,56 @@
</span><span class="cx">             }
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;comment&quot;: &quot;Can’t switch from URL containing username/password/port to file&quot;,
+            &quot;href&quot;: &quot;http://test@example.net&quot;,
+            &quot;new_value&quot;: &quot;file&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;http://test@example.net/&quot;,
+                &quot;protocol&quot;: &quot;http:&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;gopher://example.net:1234&quot;,
+            &quot;new_value&quot;: &quot;file&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;gopher://example.net:1234/&quot;,
+                &quot;protocol&quot;: &quot;gopher:&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;wss://x:x@example.net:1234&quot;,
+            &quot;new_value&quot;: &quot;file&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;wss://x:x@example.net:1234/&quot;,
+                &quot;protocol&quot;: &quot;wss:&quot;
+            }
+        },
+        {
+            &quot;comment&quot;: &quot;Can’t switch from file URL with no host&quot;,
+            &quot;href&quot;: &quot;file://localhost/&quot;,
+            &quot;new_value&quot;: &quot;http&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;protocol&quot;: &quot;file:&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file:///test&quot;,
+            &quot;new_value&quot;: &quot;gopher&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///test&quot;,
+                &quot;protocol&quot;: &quot;file:&quot;
+            }
+        },
+        {
+            &quot;href&quot;: &quot;file:&quot;,
+            &quot;new_value&quot;: &quot;wss&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;protocol&quot;: &quot;file:&quot;
+            }
+        },
+        {
</ins><span class="cx">             &quot;comment&quot;: &quot;Can’t switch from special scheme to non-special&quot;,
</span><span class="cx">             &quot;href&quot;: &quot;http://example.net&quot;,
</span><span class="cx">             &quot;new_value&quot;: &quot;b&quot;,
</span><span class="lines">@@ -119,6 +169,14 @@
</span><span class="cx">             }
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;href&quot;: &quot;file://hi/path&quot;,
+            &quot;new_value&quot;: &quot;s&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://hi/path&quot;,
+                &quot;protocol&quot;: &quot;file:&quot;
+            }
+        },
+        {
</ins><span class="cx">             &quot;href&quot;: &quot;https://example.net&quot;,
</span><span class="cx">             &quot;new_value&quot;: &quot;s&quot;,
</span><span class="cx">             &quot;expected&quot;: {
</span><span class="lines">@@ -169,6 +227,14 @@
</span><span class="cx">             }
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;href&quot;: &quot;ssh://example.net&quot;,
+            &quot;new_value&quot;: &quot;file&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;ssh://example.net&quot;,
+                &quot;protocol&quot;: &quot;ssh:&quot;
+            }
+        },
+        {
</ins><span class="cx">             &quot;href&quot;: &quot;nonsense:///test&quot;,
</span><span class="cx">             &quot;new_value&quot;: &quot;https&quot;,
</span><span class="cx">             &quot;expected&quot;: {
</span><span class="lines">@@ -1383,6 +1449,17 @@
</span><span class="cx">             }
</span><span class="cx">         },
</span><span class="cx">         {
</span><ins>+            &quot;comment&quot;: &quot;Port numbers are 16 bit integers, overflowing is an error&quot;,
+            &quot;href&quot;: &quot;non-special://example.net:8080/path&quot;,
+            &quot;new_value&quot;: &quot;65536&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;non-special://example.net:8080/path&quot;,
+                &quot;host&quot;: &quot;example.net:8080&quot;,
+                &quot;hostname&quot;: &quot;example.net&quot;,
+                &quot;port&quot;: &quot;8080&quot;
+            }
+        },
+        {
</ins><span class="cx">             &quot;href&quot;: &quot;file://test/&quot;,
</span><span class="cx">             &quot;new_value&quot;: &quot;12&quot;,
</span><span class="cx">             &quot;expected&quot;: {
</span><span class="lines">@@ -1536,6 +1613,33 @@
</span><span class="cx">                 &quot;href&quot;: &quot;sc://example.net/%23&quot;,
</span><span class="cx">                 &quot;pathname&quot;: &quot;/%23&quot;
</span><span class="cx">             }
</span><ins>+        },
+        {
+            &quot;comment&quot;: &quot;File URLs and (back)slashes&quot;,
+            &quot;href&quot;: &quot;file://monkey/&quot;,
+            &quot;new_value&quot;: &quot;\\\\&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file://monkey/&quot;,
+                &quot;pathname&quot;: &quot;/&quot;
+            }
+        },
+        {
+            &quot;comment&quot;: &quot;File URLs and (back)slashes&quot;,
+            &quot;href&quot;: &quot;file:///unicorn&quot;,
+            &quot;new_value&quot;: &quot;//\\/&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;pathname&quot;: &quot;/&quot;
+            }
+        },
+        {
+            &quot;comment&quot;: &quot;File URLs and (back)slashes&quot;,
+            &quot;href&quot;: &quot;file:///unicorn&quot;,
+            &quot;new_value&quot;: &quot;//monkey/..//&quot;,
+            &quot;expected&quot;: {
+                &quot;href&quot;: &quot;file:///&quot;,
+                &quot;pathname&quot;: &quot;/&quot;
+            }
</ins><span class="cx">         }
</span><span class="cx">     ],
</span><span class="cx">     &quot;search&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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -28,6 +28,7 @@
</span><span class="cx"> /c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://f:fifty-two/c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;http://f:999999/c&gt; against &lt;http://example.org/foo/bar&gt; 
</span><ins>+PASS Parsing: &lt;non-special://f:999999/c&gt; against &lt;http://example.org/foo/bar&gt; 
</ins><span class="cx"> PASS Parsing: &lt;http://f: 21 / b ? d # e &gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;&gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="cx"> PASS Parsing: &lt;          &gt; against &lt;http://example.org/foo/bar&gt; 
</span><span class="lines">@@ -412,6 +413,28 @@
</span><span class="cx"> PASS Parsing: &lt;file:?x&gt; against &lt;file:///test?test#test&gt; 
</span><span class="cx"> PASS Parsing: &lt;#x&gt; against &lt;file:///test?test#test&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:#x&gt; against &lt;file:///test?test#test&gt; 
</span><ins>+FAIL Parsing: &lt;file:\\//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+FAIL Parsing: &lt;file:\\\\&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+FAIL Parsing: &lt;file:\\\\?fox&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///?fox&quot; but got &quot;file:////?fox&quot;
+FAIL Parsing: &lt;file:\\\\#guppy&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///#guppy&quot; but got &quot;file:////#guppy&quot;
+FAIL Parsing: &lt;file://spider///&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file://spider/&quot; but got &quot;file://spider///&quot;
+FAIL Parsing: &lt;file:\\localhost//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file:////&quot;
+PASS Parsing: &lt;file:///localhost//cat&gt; against &lt;about:blank&gt; 
+FAIL Parsing: &lt;file://\/localhost//cat&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///localhost//cat&quot; but got &quot;file:////localhost//cat&quot;
+FAIL Parsing: &lt;file://localhost//a//../..//&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///&quot; but got &quot;file://///&quot;
+FAIL Parsing: &lt;/////mouse&gt; against &lt;file:///elephant&gt; assert_equals: href expected &quot;file:///mouse&quot; but got &quot;file://///mouse&quot;
+PASS Parsing: &lt;\//pig&gt; against &lt;file://lion/&gt; 
+FAIL Parsing: &lt;\/localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file:///pig&quot; but got &quot;file:////pig&quot;
+FAIL Parsing: &lt;//localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file:///pig&quot; but got &quot;file:////pig&quot;
+FAIL Parsing: &lt;/..//localhost//pig&gt; against &lt;file://lion/&gt; assert_equals: href expected &quot;file://lion/localhost//pig&quot; but got &quot;file:////localhost//pig&quot;
+PASS Parsing: &lt;file://&gt; against &lt;file://ape/&gt; 
+FAIL Parsing: &lt;/rooibos&gt; against &lt;file://tea/&gt; assert_equals: href expected &quot;file://tea/rooibos&quot; but got &quot;file:///rooibos&quot;
+FAIL Parsing: &lt;/?chai&gt; against &lt;file://tea/&gt; assert_equals: href expected &quot;file://tea/?chai&quot; but got &quot;file:///?chai&quot;
+FAIL Parsing: &lt;file://example.net/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://example.net/C:/&quot;
+FAIL Parsing: &lt;file://1.2.3.4/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://1.2.3.4/C:/&quot;
+FAIL Parsing: &lt;file://[1::8]/C:/&gt; against &lt;about:blank&gt; assert_equals: href expected &quot;file:///C:/&quot; but got &quot;file://[1::8]/C:/&quot;
+PASS Parsing: &lt;file:/C|/&gt; against &lt;about:blank&gt; 
+PASS Parsing: &lt;file://C|/&gt; against &lt;about:blank&gt; 
</ins><span class="cx"> PASS Parsing: &lt;file:&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:?q=v&gt; against &lt;about:blank&gt; 
</span><span class="cx"> PASS Parsing: &lt;file:#frag&gt; against &lt;about:blank&gt; 
</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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -30,9 +30,30 @@
</span><span class="cx"> PASS URL: Setting &lt;a://example.net&gt;.protocol = 'bé' Non-ASCII is rejected 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;a://example.net&gt;.protocol = 'bé' Non-ASCII is rejected 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;a://example.net&gt;.protocol = 'bé' Non-ASCII is rejected 
</span><ins>+PASS URL: Setting &lt;http://test@example.net&gt;.protocol = 'file' Can’t switch from URL containing username/password/port to file 
+FAIL &lt;a&gt;: Setting &lt;http://test@example.net&gt;.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected &quot;http://test@example.net/&quot; but got &quot;file://test@example.net/&quot;
+FAIL &lt;area&gt;: Setting &lt;http://test@example.net&gt;.protocol = 'file' Can’t switch from URL containing username/password/port to file assert_equals: expected &quot;http://test@example.net/&quot; but got &quot;file://test@example.net/&quot;
+FAIL URL: Setting &lt;gopher://example.net:1234&gt;.protocol = 'file' assert_equals: expected &quot;gopher://example.net:1234/&quot; but got &quot;file://example.net:1234/&quot;
+FAIL &lt;a&gt;: Setting &lt;gopher://example.net:1234&gt;.protocol = 'file' assert_equals: expected &quot;gopher://example.net:1234/&quot; but got &quot;file://example.net:1234/&quot;
+FAIL &lt;area&gt;: Setting &lt;gopher://example.net:1234&gt;.protocol = 'file' assert_equals: expected &quot;gopher://example.net:1234/&quot; but got &quot;file://example.net:1234/&quot;
+PASS URL: Setting &lt;wss://x:x@example.net:1234&gt;.protocol = 'file' 
+FAIL &lt;a&gt;: Setting &lt;wss://x:x@example.net:1234&gt;.protocol = 'file' assert_equals: expected &quot;wss://x:x@example.net:1234/&quot; but got &quot;file://x:x@example.net:1234/&quot;
+FAIL &lt;area&gt;: Setting &lt;wss://x:x@example.net:1234&gt;.protocol = 'file' assert_equals: expected &quot;wss://x:x@example.net:1234/&quot; but got &quot;file://x:x@example.net:1234/&quot;
+PASS URL: Setting &lt;file://localhost/&gt;.protocol = 'http' Can’t switch from file URL with no host 
+FAIL &lt;a&gt;: Setting &lt;file://localhost/&gt;.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected &quot;file:///&quot; but got &quot;http:///&quot;
+FAIL &lt;area&gt;: Setting &lt;file://localhost/&gt;.protocol = 'http' Can’t switch from file URL with no host assert_equals: expected &quot;file:///&quot; but got &quot;http:///&quot;
+FAIL URL: Setting &lt;file:///test&gt;.protocol = 'gopher' assert_equals: expected &quot;file:///test&quot; but got &quot;gopher://test/&quot;
+FAIL &lt;a&gt;: Setting &lt;file:///test&gt;.protocol = 'gopher' assert_equals: expected &quot;file:///test&quot; but got &quot;gopher://test/&quot;
+FAIL &lt;area&gt;: Setting &lt;file:///test&gt;.protocol = 'gopher' assert_equals: expected &quot;file:///test&quot; but got &quot;gopher://test/&quot;
+PASS URL: Setting &lt;file:&gt;.protocol = 'wss' 
+FAIL &lt;a&gt;: Setting &lt;file:&gt;.protocol = 'wss' assert_equals: expected &quot;file:///&quot; but got &quot;wss:///&quot;
+FAIL &lt;area&gt;: Setting &lt;file:&gt;.protocol = 'wss' assert_equals: expected &quot;file:///&quot; but got &quot;wss:///&quot;
</ins><span class="cx"> FAIL URL: Setting &lt;http://example.net&gt;.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected &quot;http://example.net/&quot; but got &quot;b://example.net/&quot;
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;http://example.net&gt;.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected &quot;http://example.net/&quot; but got &quot;b://example.net/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;http://example.net&gt;.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected &quot;http://example.net/&quot; but got &quot;b://example.net/&quot;
</span><ins>+FAIL URL: Setting &lt;file://hi/path&gt;.protocol = 's' assert_equals: expected &quot;file://hi/path&quot; but got &quot;s://hi/path&quot;
+FAIL &lt;a&gt;: Setting &lt;file://hi/path&gt;.protocol = 's' assert_equals: expected &quot;file://hi/path&quot; but got &quot;s://hi/path&quot;
+FAIL &lt;area&gt;: Setting &lt;file://hi/path&gt;.protocol = 's' assert_equals: expected &quot;file://hi/path&quot; but got &quot;s://hi/path&quot;
</ins><span class="cx"> FAIL URL: Setting &lt;https://example.net&gt;.protocol = 's' assert_equals: expected &quot;https://example.net/&quot; but got &quot;s://example.net/&quot;
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;https://example.net&gt;.protocol = 's' assert_equals: expected &quot;https://example.net/&quot; but got &quot;s://example.net/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;https://example.net&gt;.protocol = 's' assert_equals: expected &quot;https://example.net/&quot; but got &quot;s://example.net/&quot;
</span><span class="lines">@@ -51,6 +72,9 @@
</span><span class="cx"> PASS URL: Setting &lt;ssh://me@example.net&gt;.protocol = 'file' 
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;ssh://me@example.net&gt;.protocol = 'file' assert_equals: expected &quot;ssh://me@example.net&quot; but got &quot;file://me@example.net&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;ssh://me@example.net&gt;.protocol = 'file' assert_equals: expected &quot;ssh://me@example.net&quot; but got &quot;file://me@example.net&quot;
</span><ins>+FAIL URL: Setting &lt;ssh://example.net&gt;.protocol = 'file' assert_equals: expected &quot;ssh://example.net&quot; but got &quot;file://example.net/&quot;
+FAIL &lt;a&gt;: Setting &lt;ssh://example.net&gt;.protocol = 'file' assert_equals: expected &quot;ssh://example.net&quot; but got &quot;file://example.net/&quot;
+FAIL &lt;area&gt;: Setting &lt;ssh://example.net&gt;.protocol = 'file' assert_equals: expected &quot;ssh://example.net&quot; but got &quot;file://example.net/&quot;
</ins><span class="cx"> FAIL URL: Setting &lt;nonsense:///test&gt;.protocol = 'https' assert_equals: expected &quot;nonsense:///test&quot; but got &quot;https://test/&quot;
</span><span class="cx"> FAIL &lt;a&gt;: Setting &lt;nonsense:///test&gt;.protocol = 'https' assert_equals: expected &quot;nonsense:///test&quot; but got &quot;https://test/&quot;
</span><span class="cx"> FAIL &lt;area&gt;: Setting &lt;nonsense:///test&gt;.protocol = 'https' assert_equals: expected &quot;nonsense:///test&quot; but got &quot;https://test/&quot;
</span><span class="lines">@@ -435,6 +459,9 @@
</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>+FAIL URL: Setting &lt;non-special://example.net:8080/path&gt;.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected &quot;non-special://example.net:8080/path&quot; but got &quot;non-special://example.net:0/path&quot;
+FAIL &lt;a&gt;: Setting &lt;non-special://example.net:8080/path&gt;.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected &quot;non-special://example.net:8080/path&quot; but got &quot;non-special://example.net:0/path&quot;
+FAIL &lt;area&gt;: Setting &lt;non-special://example.net:8080/path&gt;.port = '65536' Port numbers are 16 bit integers, overflowing is an error assert_equals: expected &quot;non-special://example.net:8080/path&quot; but got &quot;non-special://example.net:0/path&quot;
</ins><span class="cx"> PASS URL: Setting &lt;file://test/&gt;.port = '12' 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;file://test/&gt;.port = '12' 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;file://test/&gt;.port = '12' 
</span><span class="lines">@@ -492,6 +519,15 @@
</span><span class="cx"> PASS URL: Setting &lt;sc://example.net&gt;.pathname = '#' # needs to be encoded, non-special scheme 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;sc://example.net&gt;.pathname = '#' # needs to be encoded, non-special scheme 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;sc://example.net&gt;.pathname = '#' # needs to be encoded, non-special scheme 
</span><ins>+FAIL URL: Setting &lt;file://monkey/&gt;.pathname = '\\' File URLs and (back)slashes assert_equals: expected &quot;file://monkey/&quot; but got &quot;file://monkey///&quot;
+FAIL &lt;a&gt;: Setting &lt;file://monkey/&gt;.pathname = '\\' File URLs and (back)slashes assert_equals: expected &quot;file://monkey/&quot; but got &quot;file://monkey///&quot;
+FAIL &lt;area&gt;: Setting &lt;file://monkey/&gt;.pathname = '\\' File URLs and (back)slashes assert_equals: expected &quot;file://monkey/&quot; but got &quot;file://monkey///&quot;
+FAIL URL: Setting &lt;file:///unicorn&gt;.pathname = '//\/' File URLs and (back)slashes assert_equals: expected &quot;file:///&quot; but got &quot;file://////&quot;
+FAIL &lt;a&gt;: Setting &lt;file:///unicorn&gt;.pathname = '//\/' File URLs and (back)slashes assert_equals: expected &quot;file:///&quot; but got &quot;file://////&quot;
+FAIL &lt;area&gt;: Setting &lt;file:///unicorn&gt;.pathname = '//\/' File URLs and (back)slashes assert_equals: expected &quot;file:///&quot; but got &quot;file://////&quot;
+FAIL URL: Setting &lt;file:///unicorn&gt;.pathname = '//monkey/..//' File URLs and (back)slashes assert_equals: expected &quot;file:///&quot; but got &quot;file://///&quot;
+FAIL &lt;a&gt;: Setting &lt;file:///unicorn&gt;.pathname = '//monkey/..//' File URLs and (back)slashes assert_equals: expected &quot;file:///&quot; but got &quot;file://///&quot;
+FAIL &lt;area&gt;: Setting &lt;file:///unicorn&gt;.pathname = '//monkey/..//' File URLs and (back)slashes assert_equals: expected &quot;file:///&quot; but got &quot;file://///&quot;
</ins><span class="cx"> PASS URL: Setting &lt;https://example.net#nav&gt;.search = 'lang=fr' 
</span><span class="cx"> PASS &lt;a&gt;: Setting &lt;https://example.net#nav&gt;.search = 'lang=fr' 
</span><span class="cx"> PASS &lt;area&gt;: Setting &lt;https://example.net#nav&gt;.search = 'lang=fr' 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurltestdatajson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -275,6 +275,11 @@
</span><span class="cx">     &quot;failure&quot;: true
</span><span class="cx">   },
</span><span class="cx">   {
</span><ins>+    &quot;input&quot;: &quot;non-special://f:999999/c&quot;,
+    &quot;base&quot;: &quot;http://example.org/foo/bar&quot;,
+    &quot;failure&quot;: true
+  },
+  {
</ins><span class="cx">     &quot;input&quot;: &quot;http://f: 21 / b ? d # e &quot;,
</span><span class="cx">     &quot;base&quot;: &quot;http://example.org/foo/bar&quot;,
</span><span class="cx">     &quot;failure&quot;: true
</span><span class="lines">@@ -5132,6 +5137,318 @@
</span><span class="cx">     &quot;search&quot;: &quot;?test&quot;,
</span><span class="cx">     &quot;hash&quot;: &quot;#x&quot;
</span><span class="cx">   },
</span><ins>+  &quot;# File URLs and many (back)slashes&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:\\\\\\\\&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:\\\\\\\\?fox&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///?fox&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;?fox&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file:\\\\\\\\#guppy&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///#guppy&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;#guppy&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://spider///&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file://spider/&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;spider&quot;,
+    &quot;hostname&quot;: &quot;spider&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:\\\\localhost//&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:///localhost//cat&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///localhost//cat&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;/localhost//cat&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://\\/localhost//cat&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///localhost//cat&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;/localhost//cat&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://localhost//a//../..//&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;/////mouse&quot;,
+    &quot;base&quot;: &quot;file:///elephant&quot;,
+    &quot;href&quot;: &quot;file:///mouse&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;/mouse&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;\\//pig&quot;,
+    &quot;base&quot;: &quot;file://lion/&quot;,
+    &quot;href&quot;: &quot;file:///pig&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;/pig&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;\\/localhost//pig&quot;,
+    &quot;base&quot;: &quot;file://lion/&quot;,
+    &quot;href&quot;: &quot;file:///pig&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;/pig&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;//localhost//pig&quot;,
+    &quot;base&quot;: &quot;file://lion/&quot;,
+    &quot;href&quot;: &quot;file:///pig&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;/pig&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;/..//localhost//pig&quot;,
+    &quot;base&quot;: &quot;file://lion/&quot;,
+    &quot;href&quot;: &quot;file://lion/localhost//pig&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;lion&quot;,
+    &quot;hostname&quot;: &quot;lion&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/localhost//pig&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://&quot;,
+    &quot;base&quot;: &quot;file://ape/&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;# File URLs with non-empty hosts&quot;,
+  {
+    &quot;input&quot;: &quot;/rooibos&quot;,
+    &quot;base&quot;: &quot;file://tea/&quot;,
+    &quot;href&quot;: &quot;file://tea/rooibos&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;tea&quot;,
+    &quot;hostname&quot;: &quot;tea&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/rooibos&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;/?chai&quot;,
+    &quot;base&quot;: &quot;file://tea/&quot;,
+    &quot;href&quot;: &quot;file://tea/?chai&quot;,
+    &quot;protocol&quot;: &quot;file:&quot;,
+    &quot;username&quot;: &quot;&quot;,
+    &quot;password&quot;: &quot;&quot;,
+    &quot;host&quot;: &quot;tea&quot;,
+    &quot;hostname&quot;: &quot;tea&quot;,
+    &quot;port&quot;: &quot;&quot;,
+    &quot;pathname&quot;: &quot;/&quot;,
+    &quot;search&quot;: &quot;?chai&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  &quot;# Windows drive letter quirk with not empty host&quot;,
+  {
+    &quot;input&quot;: &quot;file://example.net/C:/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///C:/&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;/C:/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://1.2.3.4/C:/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///C:/&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;/C:/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://[1::8]/C:/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///C:/&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;/C:/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  &quot;# Windows drive letter quirk (no host)&quot;,
+  {
+    &quot;input&quot;: &quot;file:/C|/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///C:/&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;/C:/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
+  {
+    &quot;input&quot;: &quot;file://C|/&quot;,
+    &quot;base&quot;: &quot;about:blank&quot;,
+    &quot;href&quot;: &quot;file:///C:/&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;/C:/&quot;,
+    &quot;search&quot;: &quot;&quot;,
+    &quot;hash&quot;: &quot;&quot;
+  },
</ins><span class="cx">   &quot;# file URLs without base URL by Rimas Misevičius&quot;,
</span><span class="cx">   {
</span><span class="cx">     &quot;input&quot;: &quot;file:&quot;,
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Clearing all marks remove all of them. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+test(function() {
+    self.performance.mark(&quot;mark1&quot;);
+    self.performance.mark(&quot;mark2&quot;);
+
+    // test that two marks have been created
+    var entries = self.performance.getEntriesByType(&quot;mark&quot;);
+    assert_equals(entries.length, 2, &quot;Two marks have been created for this test.&quot;);
+
+    // clear all marks
+    self.performance.clearMarks();
+
+    // test that all marks were cleared
+    entries = self.performance.getEntriesByType(&quot;mark&quot;);
+
+    assert_equals(entries.length, 0, &quot;All marks have been cleared.&quot;);
+
+}, &quot;Clearing all marks remove all of them.&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_marksworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Clearing all marks remove all of them. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+test(function()
+{
+    self.performance.mark(&quot;mark1&quot;, &quot;responseStart&quot;);
+    self.performance.measure(&quot;measure1&quot;, &quot;mark1&quot;);
+    self.performance.mark(&quot;mark2&quot;, &quot;responseStart&quot;);
+    self.performance.measure(&quot;measure2&quot;, &quot;mark2&quot;);
+
+    // test that two measures have been created
+    var entries = self.performance.getEntriesByType(&quot;measure&quot;);
+    assert_equals(entries.length, 2, &quot;Two measures have been created for this test.&quot;);
+
+    // clear all measures
+    self.performance.clearMeasures();
+
+    // test that all measures were cleared
+    entries = self.performance.getEntriesByType(&quot;measure&quot;);
+    assert_equals(entries.length, 0,
+              &quot;After a call to self.performance.clearMeasures(), &quot; +
+              &quot;self.performance.getEntriesByType(\&quot;measure\&quot;) returns an empty object.&quot;);
+
+}, &quot;Clearing all marks remove all of them.&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_all_measuresworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Clearing a non-existent mark doesn't affect existing marks 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+test(function() {
+    self.performance.mark(&quot;mark1&quot;);
+    self.performance.mark(&quot;mark2&quot;);
+
+    // test that two marks have been created
+    var entries = self.performance.getEntriesByType(&quot;mark&quot;);
+    assert_equals(entries.length, 2, &quot;Two marks have been created for this test.&quot;);
+
+    // clear non-existent mark
+    self.performance.clearMarks(&quot;mark3&quot;);
+
+    // test that &quot;mark1&quot; still exists
+    entries = self.performance.getEntriesByName(&quot;mark1&quot;);
+    assert_equals(entries[0].name, &quot;mark1&quot;,
+              &quot;After a call to self.performance.clearMarks(\&quot;mark3\&quot;), where \&quot;mark3&quot; +
+              &quot;\&quot; is a non-existent mark, self.performance.getEntriesByName(\&quot;mark1\&quot;) &quot; +
+              &quot;returns an object containing the \&quot;mark1\&quot; mark.&quot;);
+
+    // test that &quot;mark2&quot; still exists
+    entries = self.performance.getEntriesByName(&quot;mark2&quot;);
+    assert_equals(entries[0].name, &quot;mark2&quot;,
+              &quot;After a call to self.performance.clearMarks(\&quot;mark3\&quot;), where \&quot;mark3&quot; +
+              &quot;\&quot; is a non-existent mark, self.performance.getEntriesByName(\&quot;mark2\&quot;) &quot; +
+              &quot;returns an object containing the \&quot;mark2\&quot; mark.&quot;);
+
+}, &quot;Clearing a non-existent mark doesn't affect existing marks&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_markworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Clearing a non-existent measure doesn't affect existing measures 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+test(function()
+{
+    self.performance.mark(&quot;mark1&quot;, &quot;responseStart&quot;);
+    self.performance.measure(&quot;measure1&quot;, &quot;mark1&quot;);
+    self.performance.mark(&quot;mark2&quot;, &quot;responseStart&quot;);
+    self.performance.measure(&quot;measure2&quot;, &quot;mark2&quot;);
+
+    // test that two measures have been created
+    var entries = self.performance.getEntriesByType(&quot;measure&quot;);
+    assert_equals(entries.length, 2, &quot;Two measures have been created for this test.&quot;);
+
+    // clear non-existent measure
+    self.performance.clearMeasures(&quot;measure3&quot;);
+
+    // test that &quot;measure1&quot; still exists
+    entries = self.performance.getEntriesByName(&quot;measure1&quot;);
+    assert_equals(entries[0].name, &quot;measure1&quot;,
+              &quot;After a call to self.performance.clearMeasures(\&quot;measure3\&quot;), where \&quot;measure3&quot; +
+              &quot;\&quot; is a non-existent measure, self.performance.getEntriesByName(\&quot;measure1\&quot;) &quot; +
+              &quot;returns an object containing the \&quot;measure1\&quot; measure.&quot;);
+
+    // test that &quot;measure2&quot; still exists
+    entries = self.performance.getEntriesByName(&quot;measure2&quot;);
+    assert_equals(entries[0].name, &quot;measure2&quot;,
+              &quot;After a call to self.performance.clearMeasures(\&quot;measure3\&quot;), where \&quot;measure3&quot; +
+              &quot;\&quot; is a non-existent measure, self.performance.getEntriesByName(\&quot;measure2\&quot;) &quot; +
+              &quot;returns an object containing the \&quot;measure2\&quot; measure.&quot;);
+
+}, &quot;Clearing a non-existent measure doesn't affect existing measures&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_non_existent_measureworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Clearing an existent mark doesn't affect other existing marks 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+test(function() {
+    self.performance.mark(&quot;mark1&quot;);
+    self.performance.mark(&quot;mark2&quot;);
+
+    // test that two marks have been created
+    var entries = self.performance.getEntriesByType(&quot;mark&quot;);
+    assert_equals(entries.length, 2, &quot;Two marks have been created for this test.&quot;);
+
+    // clear existent mark
+    self.performance.clearMarks(&quot;mark1&quot;);
+
+    // test that &quot;mark1&quot; was cleared
+    entries = self.performance.getEntriesByName(&quot;mark1&quot;);
+
+    assert_equals(entries.length, 0,
+              &quot;After a call to self.performance.clearMarks(\&quot;mark1\&quot;), &quot; +
+              &quot;window.performance.getEntriesByName(\&quot;mark1\&quot;) returns an empty object.&quot;);
+
+    // test that &quot;mark2&quot; still exists
+    entries = self.performance.getEntriesByName(&quot;mark2&quot;);
+    assert_equals(entries[0].name, &quot;mark2&quot;,
+              &quot;After a call to self.performance.clearMarks(\&quot;mark1\&quot;), &quot; +
+              &quot;window.performance.getEntriesByName(\&quot;mark2\&quot;) returns an object containing the &quot; +
+              &quot;\&quot;mark2\&quot; mark.&quot;);
+
+}, &quot;Clearing an existent mark doesn't affect other existing marks&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_markworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Clearing an existent measure doesn't affect other existing measures 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+test(function()
+{
+    self.performance.mark(&quot;mark1&quot;, &quot;responseStart&quot;);
+    self.performance.measure(&quot;measure1&quot;, &quot;mark1&quot;);
+    self.performance.mark(&quot;mark2&quot;, &quot;responseStart&quot;);
+    self.performance.measure(&quot;measure2&quot;, &quot;mark2&quot;);
+
+    // test that two measures have been created
+    var entries = self.performance.getEntriesByType(&quot;measure&quot;);
+    assert_equals(entries.length, 2, &quot;Two measures have been created for this test.&quot;);
+
+    // clear existent measure
+    self.performance.clearMeasures(&quot;measure1&quot;);
+
+    // test that &quot;measure1&quot; was cleared
+    entries = self.performance.getEntriesByName(&quot;measure1&quot;);
+
+    assert_equals(entries.length, 0,
+              &quot;After a call to self.performance.clearMeasures(\&quot;measure1\&quot;), &quot; +
+              &quot;self.performance.getEntriesByName(\&quot;measure1\&quot;) returns an empty object.&quot;);
+
+    // test that &quot;measure2&quot; still exists
+    entries = self.performance.getEntriesByName(&quot;measure2&quot;);
+    assert_equals(entries[0].name, &quot;measure2&quot;,
+              &quot;After a call to self.performance.clearMeasures(\&quot;measure1\&quot;), &quot; +
+              &quot;self.performance.getEntriesByName(\&quot;measure2\&quot;) returns an object containing the &quot; +
+              &quot;\&quot;measure2\&quot; measure.&quot;);
+
+}, &quot;Clearing an existent measure doesn't affect other existing measures&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingclear_one_measureworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Validate the user timing entry type PerformanceMark 
+PASS Validate the user timing entry type PerformanceMeasure 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+test(function () {
+  self.performance.mark('mark');
+  var mark_entry = self.performance.getEntriesByName('mark')[0];
+
+  assert_equals(Object.prototype.toString.call(mark_entry), '[object PerformanceMark]', 'Class name of mark entry should be PerformanceMark.');
+}, &quot;Validate the user timing entry type PerformanceMark&quot;);
+
+test(function () {
+  self.performance.measure('measure');
+  var measure_entry = self.performance.getEntriesByName('measure')[0];
+
+  assert_equals(Object.prototype.toString.call(measure_entry), '[object PerformanceMeasure]', 'Class name of measure entry should be PerformanceMeasure.');
+}, &quot;Validate the user timing entry type PerformanceMeasure&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingentry_typeworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingidlharnessexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -33,9 +33,11 @@
</span><span class="cx">     void clearMeasures(optional DOMString measureName);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[Exposed=(Window,Worker)]
</ins><span class="cx"> interface PerformanceMark : PerformanceEntry {
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[Exposed=(Window,Worker)]
</ins><span class="cx"> interface PerformanceMeasure : PerformanceEntry {
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingidlharnesshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -17,9 +17,11 @@
</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><ins>+[Exposed=(Window,Worker)]
</ins><span class="cx"> interface Performance {
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[Exposed=(Window,Worker)]
</ins><span class="cx"> interface PerformanceEntry {
</span><span class="cx"> };
</span><span class="cx"> &lt;/pre&gt;
</span><span class="lines">@@ -33,9 +35,11 @@
</span><span class="cx">     void clearMeasures(optional DOMString measureName);
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[Exposed=(Window,Worker)]
</ins><span class="cx"> interface PerformanceMark : PerformanceEntry {
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+[Exposed=(Window,Worker)]
</ins><span class="cx"> interface PerformanceMeasure : PerformanceEntry {
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+Description
+
+This test validates exception scenarios of invoking mark() and measure() with timing attributes as value.
+
+
+PASS performance.mark should throw if used with timing attribute navigationStart 
+PASS performance.mark should throw if used with timing attribute unloadEventStart 
+PASS performance.mark should throw if used with timing attribute unloadEventEnd 
+PASS performance.mark should throw if used with timing attribute redirectStart 
+PASS performance.mark should throw if used with timing attribute redirectEnd 
+PASS performance.mark should throw if used with timing attribute fetchStart 
+PASS performance.mark should throw if used with timing attribute domainLookupStart 
+PASS performance.mark should throw if used with timing attribute domainLookupEnd 
+PASS performance.mark should throw if used with timing attribute connectStart 
+PASS performance.mark should throw if used with timing attribute connectEnd 
+PASS performance.mark should throw if used with timing attribute secureConnectionStart 
+PASS performance.mark should throw if used with timing attribute requestStart 
+PASS performance.mark should throw if used with timing attribute responseStart 
+PASS performance.mark should throw if used with timing attribute responseEnd 
+PASS performance.mark should throw if used with timing attribute domLoading 
+PASS performance.mark should throw if used with timing attribute domInteractive 
+PASS performance.mark should throw if used with timing attribute domContentLoadedEventStart 
+PASS performance.mark should throw if used with timing attribute domContentLoadedEventEnd 
+PASS performance.mark should throw if used with timing attribute domComplete 
+PASS performance.mark should throw if used with timing attribute loadEventStart 
+PASS performance.mark should throw if used with timing attribute loadEventEnd 
+FAIL performance.measure should throw if used with timing attribute navigationStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute unloadEventStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute unloadEventEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute redirectStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute redirectEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute fetchStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domainLookupStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domainLookupEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute connectStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute connectEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute secureConnectionStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute requestStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute responseStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute responseEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domLoading assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domInteractive assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domContentLoadedEventStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domContentLoadedEventEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute domComplete assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute loadEventStart assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+FAIL performance.measure should throw if used with timing attribute loadEventEnd assert_throws: function &quot;function () { window.performance.measure(attrName); }&quot; did not throw
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributeshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset=&quot;utf-8&quot; /&gt;
+    &lt;title&gt;exception test of performance.mark and performance.measure&lt;/title&gt;
+    &lt;meta rel=&quot;help&quot; href=&quot;https://w3c.github.io/user-timing/#extensions-performance-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;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;h1&gt;Description&lt;/h1&gt;
+    &lt;p&gt;This test validates exception scenarios of invoking mark() and measure() with timing attributes as value.&lt;/p&gt;
+    &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+    &lt;script&gt;
+function emit_test(attrName) {
+    test(function() {
+        assert_throws(&quot;SyntaxError&quot;, function() { window.performance.mark(attrName); });
+    }, &quot;performance.mark should throw if used with timing attribute &quot; + attrName);
+}
+for (var i in timingAttributes) {
+  emit_test(timingAttributes[i]);
+}
+
+function emit_test2(attrName) {
+    test(function() {
+        assert_throws(&quot;SyntaxError&quot;, function() { window.performance.measure(attrName); });
+    }, &quot;performance.measure should throw if used with timing attribute &quot; + attrName);
+}
+for (var i in timingAttributes) {
+  emit_test2(timingAttributes[i]);
+}
+    &lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+
+PASS performance.mark should not throw if used with timing attribute navigationStart in workers 
+PASS performance.mark should not throw if used with timing attribute unloadEventStart in workers 
+PASS performance.mark should not throw if used with timing attribute unloadEventEnd in workers 
+PASS performance.mark should not throw if used with timing attribute redirectStart in workers 
+PASS performance.mark should not throw if used with timing attribute redirectEnd in workers 
+PASS performance.mark should not throw if used with timing attribute fetchStart in workers 
+PASS performance.mark should not throw if used with timing attribute domainLookupStart in workers 
+PASS performance.mark should not throw if used with timing attribute domainLookupEnd in workers 
+PASS performance.mark should not throw if used with timing attribute connectStart in workers 
+PASS performance.mark should not throw if used with timing attribute connectEnd in workers 
+PASS performance.mark should not throw if used with timing attribute secureConnectionStart in workers 
+PASS performance.mark should not throw if used with timing attribute requestStart in workers 
+PASS performance.mark should not throw if used with timing attribute responseStart in workers 
+PASS performance.mark should not throw if used with timing attribute responseEnd in workers 
+PASS performance.mark should not throw if used with timing attribute domLoading in workers 
+PASS performance.mark should not throw if used with timing attribute domInteractive in workers 
+PASS performance.mark should not throw if used with timing attribute domContentLoadedEventStart in workers 
+PASS performance.mark should not throw if used with timing attribute domContentLoadedEventEnd in workers 
+PASS performance.mark should not throw if used with timing attribute domComplete in workers 
+PASS performance.mark should not throw if used with timing attribute loadEventStart in workers 
+PASS performance.mark should not throw if used with timing attribute loadEventEnd in workers 
+PASS performance.measure should not throw if used with timing attribute navigationStart in workers 
+PASS performance.measure should not throw if used with timing attribute unloadEventStart in workers 
+PASS performance.measure should not throw if used with timing attribute unloadEventEnd in workers 
+PASS performance.measure should not throw if used with timing attribute redirectStart in workers 
+PASS performance.measure should not throw if used with timing attribute redirectEnd in workers 
+PASS performance.measure should not throw if used with timing attribute fetchStart in workers 
+PASS performance.measure should not throw if used with timing attribute domainLookupStart in workers 
+PASS performance.measure should not throw if used with timing attribute domainLookupEnd in workers 
+PASS performance.measure should not throw if used with timing attribute connectStart in workers 
+PASS performance.measure should not throw if used with timing attribute connectEnd in workers 
+PASS performance.measure should not throw if used with timing attribute secureConnectionStart in workers 
+PASS performance.measure should not throw if used with timing attribute requestStart in workers 
+PASS performance.measure should not throw if used with timing attribute responseStart in workers 
+PASS performance.measure should not throw if used with timing attribute responseEnd in workers 
+PASS performance.measure should not throw if used with timing attribute domLoading in workers 
+PASS performance.measure should not throw if used with timing attribute domInteractive in workers 
+PASS performance.measure should not throw if used with timing attribute domContentLoadedEventStart in workers 
+PASS performance.measure should not throw if used with timing attribute domContentLoadedEventEnd in workers 
+PASS performance.measure should not throw if used with timing attribute domComplete in workers 
+PASS performance.measure should not throw if used with timing attribute loadEventStart in workers 
+PASS performance.measure should not throw if used with timing attribute loadEventEnd in workers 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_with_timing_attributesworkerjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+importScripts(&quot;/resources/testharness.js&quot;);
+importScripts(&quot;resources/webperftestharness.js&quot;);
+
+function emit_test(attrName) {
+    test(function() {
+      performance.mark(attrName);
+      performance.clearMarks(attrName);
+    }, &quot;performance.mark should not throw if used with timing attribute &quot; + attrName
+       + &quot; in workers&quot;);
+}
+for (var i in timingAttributes) {
+  emit_test(timingAttributes[i]);
+}
+
+function emit_test2(attrName) {
+    test(function() {
+      performance.measure(attrName);
+      performance.clearMeasures(attrName);
+    }, &quot;performance.measure should not throw if used with timing attribute &quot; + attrName
+       + &quot; in workers&quot;);
+}
+for (var i in timingAttributes) {
+  emit_test2(timingAttributes[i]);
+}
+done();
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_without_parameterexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+Description
+
+This test validates exception scenarios of invoking mark() and measure() without parameter.
+
+
+PASS window.performance.mark() throws a TypeError exception when invoke without a parameter. 
+PASS window.performance.measure() throws a TypeError exception when invoke without a parameter. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminginvoke_without_parameterhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta charset=&quot;utf-8&quot; /&gt;
+        &lt;title&gt;exception test of performance.mark and performance.measure&lt;/title&gt;
+        &lt;link rel=&quot;author&quot; title=&quot;Intel&quot; href=&quot;http://www.intel.com/&quot; /&gt;
+        &lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/user-timing/#extensions-performance-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;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;h1&gt;Description&lt;/h1&gt;
+        &lt;p&gt;This test validates exception scenarios of invoking mark() and measure() without parameter.&lt;/p&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;script&gt;
+test(function () {
+    assert_throws(new TypeError(), function () { window.performance.mark() });
+}, &quot;window.performance.mark() throws a TypeError exception when invoke without a parameter.&quot;);
+
+test(function () {
+    assert_throws(new TypeError(), function () { window.performance.measure(); });
+}, &quot;window.performance.measure() throws a TypeError exception when invoke without a parameter.&quot;);
+        &lt;/script&gt;
+    &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+
+PASS Entry 0 is properly created 
+PASS Entry 1 is properly created 
+PASS Entry 0 has the proper name 
+PASS Entry 0 startTime is approximately correct (up to 20ms difference allowed) 
+PASS Entry 0 has the proper entryType 
+PASS Entry 0 duration == 0 
+PASS getEntriesByName(&quot;mark&quot;, &quot;mark&quot;)[0] returns an object containing a &quot;mark&quot; mark 
+PASS The mark returned by getEntriesByName(&quot;mark&quot;, &quot;mark&quot;)[0] matches the mark returned by getEntriesByName(&quot;mark&quot;)[0] 
+PASS getEntries()[0] returns an object containing a &quot;mark&quot; mark 
+PASS The mark returned by getEntries()[0] matches the mark returned by getEntriesByName(&quot;mark&quot;)[0] 
+PASS getEntriesByType(&quot;mark&quot;)[0] returns an object containing a &quot;mark&quot; mark 
+PASS The mark returned by getEntriesByType(&quot;mark&quot;)[0] matches the mark returned by getEntriesByName(&quot;mark&quot;)[0] 
+PASS Entry 1 has the proper name 
+PASS Entry 1 startTime is approximately correct (up to 20ms difference allowed) 
+PASS Entry 1 has the proper entryType 
+PASS Entry 1 duration == 0 
+PASS getEntriesByName(&quot;mark&quot;, &quot;mark&quot;)[1] returns an object containing a &quot;mark&quot; mark 
+PASS The mark returned by getEntriesByName(&quot;mark&quot;, &quot;mark&quot;)[1] matches the mark returned by getEntriesByName(&quot;mark&quot;)[1] 
+PASS getEntries()[1] returns an object containing a &quot;mark&quot; mark 
+PASS The mark returned by getEntries()[1] matches the mark returned by getEntriesByName(&quot;mark&quot;)[1] 
+PASS getEntriesByType(&quot;mark&quot;)[1] returns an object containing a &quot;mark&quot; mark 
+PASS The mark returned by getEntriesByType(&quot;mark&quot;)[1] matches the mark returned by getEntriesByName(&quot;mark&quot;)[1] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,118 @@
</span><ins>+// test data
+var testThreshold = 20;
+
+var expectedTimes = new Array();
+
+function match_entries(entries, index)
+{
+    var entry = entries[index];
+    var match = self.performance.getEntriesByName(&quot;mark&quot;)[index];
+    assert_equals(entry.name, match.name, &quot;entry.name&quot;);
+    assert_equals(entry.startTime, match.startTime, &quot;entry.startTime&quot;);
+    assert_equals(entry.entryType, match.entryType, &quot;entry.entryType&quot;);
+    assert_equals(entry.duration, match.duration, &quot;entry.duration&quot;);
+}
+
+function filter_entries_by_type(entryList, entryType)
+{
+    var testEntries = new Array();
+
+    // filter entryList
+    for (var i in entryList)
+    {
+        if (entryList[i].entryType == entryType)
+        {
+            testEntries.push(entryList[i]);
+        }
+    }
+
+    return testEntries;
+}
+
+test(function () {
+  // create first mark
+  self.performance.mark(&quot;mark&quot;);
+
+  expectedTimes[0] = self.performance.now();
+
+  entries = self.performance.getEntriesByName(&quot;mark&quot;);
+  assert_equals(entries.length, 1);
+}, &quot;Entry 0 is properly created&quot;);
+
+test(function () {
+    // create second, duplicate mark
+    self.performance.mark(&quot;mark&quot;);
+
+    expectedTimes[1] = self.performance.now();
+
+    entries = self.performance.getEntriesByName(&quot;mark&quot;);
+    assert_equals(entries.length, 2);
+
+}, &quot;Entry 1 is properly created&quot;);
+
+function test_mark(index) {
+   test(function () {
+       entries = self.performance.getEntriesByName(&quot;mark&quot;);
+       assert_equals(entries[index].name, &quot;mark&quot;, &quot;Entry has the proper name&quot;);
+   }, &quot;Entry &quot; + index + &quot; has the proper name&quot;);
+
+   test(function () {
+       entries = self.performance.getEntriesByName(&quot;mark&quot;);
+       assert_approx_equals(entries[index].startTime, expectedTimes[index], testThreshold);
+   }, &quot;Entry &quot; + index + &quot; startTime is approximately correct (up to &quot; + testThreshold +
+              &quot;ms difference allowed)&quot;);
+
+   test(function () {
+       entries = self.performance.getEntriesByName(&quot;mark&quot;);
+       assert_equals(entries[index].entryType, &quot;mark&quot;);
+   }, &quot;Entry &quot; + index + &quot; has the proper entryType&quot;);
+
+   test(function () {
+       entries = self.performance.getEntriesByName(&quot;mark&quot;);
+       assert_equals(entries[index].duration, 0);
+   }, &quot;Entry &quot; + index +  &quot; duration == 0&quot;);
+
+   test(function () {
+    entries = self.performance.getEntriesByName(&quot;mark&quot;, &quot;mark&quot;);
+    assert_equals(entries[index].name, &quot;mark&quot;);
+   }, &quot;getEntriesByName(\&quot;mark\&quot;, \&quot;mark\&quot;)[&quot; + index + &quot;] returns an &quot; +
+                &quot;object containing a \&quot;mark\&quot; mark&quot;);
+
+   test(function () {
+    entries = self.performance.getEntriesByName(&quot;mark&quot;, &quot;mark&quot;);
+    match_entries(entries, index);
+   }, &quot;The mark returned by getEntriesByName(\&quot;mark\&quot;, \&quot;mark\&quot;)[&quot; + index
+      + &quot;] matches the mark returned by &quot; +
+              &quot;getEntriesByName(\&quot;mark\&quot;)[&quot; + index + &quot;]&quot;);
+
+   test(function () {
+    entries = filter_entries_by_type(self.performance.getEntries(), &quot;mark&quot;);
+    assert_equals(entries[index].name, &quot;mark&quot;);
+   }, &quot;getEntries()[&quot; + index + &quot;] returns an &quot; +
+                &quot;object containing a \&quot;mark\&quot; mark&quot;);
+
+   test(function () {
+    entries = filter_entries_by_type(self.performance.getEntries(), &quot;mark&quot;);
+    match_entries(entries, index);
+   }, &quot;The mark returned by getEntries()[&quot; + index
+      + &quot;] matches the mark returned by &quot; +
+              &quot;getEntriesByName(\&quot;mark\&quot;)[&quot; + index + &quot;]&quot;);
+
+   test(function () {
+    entries = self.performance.getEntriesByType(&quot;mark&quot;);
+    assert_equals(entries[index].name, &quot;mark&quot;);
+   }, &quot;getEntriesByType(\&quot;mark\&quot;)[&quot; + index + &quot;] returns an &quot; +
+                &quot;object containing a \&quot;mark\&quot; mark&quot;);
+
+   test(function () {
+    entries = self.performance.getEntriesByType(&quot;mark&quot;);
+    match_entries(entries, index);
+   }, &quot;The mark returned by getEntriesByType(\&quot;mark\&quot;)[&quot; + index
+      + &quot;] matches the mark returned by &quot; +
+              &quot;getEntriesByName(\&quot;mark\&quot;)[&quot; + index + &quot;]&quot;);
+
+}
+
+for (var i = 0; i &lt; expectedTimes.length; i++) {
+  test_mark(i);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmarkworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmark_exceptionsexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+Description
+
+This test validates that the performance.mark() method throws a SYNTAX_ERR exception whenever a navigation timing attribute is provided for the name parameter.
+
+
+PASS window.performance.mark(&quot;navigationStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;unloadEventStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;unloadEventEnd&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;redirectStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;redirectEnd&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;fetchStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domainLookupStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domainLookupEnd&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;connectStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;connectEnd&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;secureConnectionStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;requestStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;responseStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;responseEnd&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domLoading&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domInteractive&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domContentLoadedEventStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domContentLoadedEventEnd&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;domComplete&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;loadEventStart&quot;) throws a SyntaxError exception. 
+PASS window.performance.mark(&quot;loadEventEnd&quot;) throws a SyntaxError exception. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmark_exceptionshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta charset=&quot;UTF-8&quot; /&gt;
+        &lt;title&gt;window.performance User Timing mark() method is throwing the proper exceptions&lt;/title&gt;
+        &lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com/&quot; /&gt;
+        &lt;link rel=&quot;help&quot; href=&quot;http://w3c.github.io/user-timing/#dom-performance-mark&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;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
+
+    &lt;script&gt;
+function test_exception(attrName) {
+    test(function () {
+        assert_throws(new SyntaxError(), function () {
+            window.performance.mark(attrName);
+        })
+    }, &quot;window.performance.mark(\&quot;&quot; + attrName + &quot;\&quot;) throws a SyntaxError exception.&quot;);
+}
+
+// loop through mark scenarios
+for (var i in timingAttributes) {
+    test_exception(timingAttributes[i]);
+}
+    &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+        &lt;h1&gt;Description&lt;/h1&gt;
+        &lt;p&gt;This test validates that the performance.mark() method throws a SYNTAX_ERR exception whenever a navigation
+           timing attribute is provided for the name parameter.
+        &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="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasureexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+Description
+
+This test validates that the performance.measure() method is working properly. This test creates the following measures to test this method:
+
+&quot;measure_no_start_no_end&quot;: created using a measure() call without a startMark or endMark provided
+&quot;measure_start_no_end&quot;: created using a measure() call with only the startMark provided
+&quot;measure_start_end&quot;: created using a measure() call with both a startMark or endMark provided
+&quot;measure_no_start_no_end&quot;: duplicate of the first measure, used to confirm names can be re-used
+After creating each measure, the existence of these measures is validated by calling performance.getEntriesByName() (both with and without the entryType parameter provided), performance.getEntriesByType(), and performance.getEntries()
+
+PASS window.performance is defined 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[0].name == &quot;measure_no_start_no_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_start_no_end&quot;)[0].name == &quot;measure_start_no_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_start_no_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_start_no_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_start_no_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_start_end&quot;)[0].name == &quot;measure_start_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_start_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_start_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_start_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[1].name == &quot;measure_no_start_no_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[1].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[1].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[1].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;, &quot;measure&quot;)[0] returns an object containing the &quot;measure_no_start_no_end&quot; measure in the correct order, and its value matches the &quot;measure_no_start_no_end&quot; measure returned by window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;) 
+PASS window.performance.getEntriesByName(&quot;measure_start_no_end&quot;, &quot;measure&quot;)[0] returns an object containing the &quot;measure_start_no_end&quot; measure in the correct order, and its value matches the &quot;measure_start_no_end&quot; measure returned by window.performance.getEntriesByName(&quot;measure_start_no_end&quot;) 
+PASS window.performance.getEntriesByName(&quot;measure_start_end&quot;, &quot;measure&quot;)[0] returns an object containing the &quot;measure_start_end&quot; measure in the correct order, and its value matches the &quot;measure_start_end&quot; measure returned by window.performance.getEntriesByName(&quot;measure_start_end&quot;) 
+PASS window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;, &quot;measure&quot;)[1] returns an object containing the &quot;measure_no_start_no_end&quot; measure in the correct order, and its value matches the &quot;measure_no_start_no_end&quot; measure returned by window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;) 
+PASS window.performance.getEntries() returns an object containing the &quot;measure_no_start_no_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[0]. 
+PASS window.performance.getEntries() returns an object containing the &quot;measure_start_no_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_start_no_end&quot;)[0]. 
+PASS window.performance.getEntries() returns an object containing the &quot;measure_start_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_start_end&quot;)[0]. 
+PASS window.performance.getEntries() returns an object containing the &quot;measure_no_start_no_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[1]. 
+PASS window.performance.getEntries() returns an object containing all test measures in order. 
+PASS window.performance.getEntriesByType(&quot;measure&quot;) returns an object containing the &quot;measure_no_start_no_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[0]. 
+PASS window.performance.getEntriesByType(&quot;measure&quot;) returns an object containing the &quot;measure_start_no_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_start_no_end&quot;)[0]. 
+PASS window.performance.getEntriesByType(&quot;measure&quot;) returns an object containing the &quot;measure_start_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_start_end&quot;)[0]. 
+PASS window.performance.getEntriesByType(&quot;measure&quot;) returns an object containing the &quot;measure_no_start_no_end&quot; measure, and it's value matches the measure returned by window.performance.getEntriesByName(&quot;measure_no_start_no_end&quot;)[1]. 
+PASS window.performance.getEntriesByType(&quot;measure&quot;) returns an object containing all test measures in order. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasurehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,329 @@
</span><ins>+
+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta charset=&quot;UTF-8&quot; /&gt;
+        &lt;title&gt;window.performance User Timing measure() method is working properly&lt;/title&gt;
+        &lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com/&quot; /&gt;
+        &lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/user-timing/#dom-performance-measure&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;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
+
+    &lt;script&gt;
+        // test data
+        var startMarkName = &quot;mark_start&quot;;
+        var startMarkValue;
+        var endMarkName = &quot;mark_end&quot;;
+        var endMarkValue;
+        var measures;
+        var testThreshold = 20;
+
+        // test measures
+        var measureTestDelay = 200;
+        var TEST_MEASURES =
+        [
+            {
+                name:                   &quot;measure_no_start_no_end&quot;,
+                startMark:              undefined,
+                endMark:                undefined,
+                startTime:              undefined,
+                duration:               undefined,
+                entryType:              &quot;measure&quot;,
+                entryMatch:             undefined,
+                order:                  undefined,
+                found:                  false
+            },
+            {
+                name:                   &quot;measure_start_no_end&quot;,
+                startMark:              &quot;mark_start&quot;,
+                endMark:                undefined,
+                startTime:              undefined,
+                duration:               undefined,
+                entryType:              &quot;measure&quot;,
+                entryMatch:             undefined,
+                order:                  undefined,
+                found:                  false
+            },
+            {
+                name:                   &quot;measure_start_end&quot;,
+                startMark:              &quot;mark_start&quot;,
+                endMark:                &quot;mark_end&quot;,
+                startTime:              undefined,
+                duration:               undefined,
+                entryType:              &quot;measure&quot;,
+                entryMatch:             undefined,
+                order:                  undefined,
+                found:                  false
+            },
+            {
+                name:                   &quot;measure_no_start_no_end&quot;,
+                startMark:              undefined,
+                endMark:                undefined,
+                startTime:              undefined,
+                duration:               undefined,
+                entryType:              &quot;measure&quot;,
+                entryMatch:             undefined,
+                order:                  undefined,
+                found:                  false
+            }
+        ];
+
+        setup({explicit_done: true});
+
+        test_namespace();
+
+        function onload_test()
+        {
+            // test for existance of User Timing and Performance Timeline interface
+            if (!has_required_interfaces())
+            {
+                test_true(false,
+                          &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
+                          &quot;are defined.&quot;);
+
+                done();
+            }
+            else
+            {
+                // create the start mark for the test measures
+                window.performance.mark(startMarkName);
+
+                // get the start mark's value
+                startMarkValue = window.performance.getEntriesByName(startMarkName)[0].startTime;
+
+                // create the test end mark using the test delay; this will allow for a significant difference between
+                // the mark values that should be represented in the duration of measures using these marks
+                setTimeout(measure_test_cb, measureTestDelay);
+            }
+        }
+
+        function measure_test_cb()
+        {
+            // create the end mark for the test measures
+            window.performance.mark(endMarkName);
+
+            // get the end mark's value
+            endMarkValue = window.performance.getEntriesByName(endMarkName)[0].startTime;
+
+            // loop through all measure scenarios and create the corresponding measures
+            for (var i in TEST_MEASURES)
+            {
+                var scenario = TEST_MEASURES[i];
+
+                if (scenario.startMark == undefined &amp;&amp; scenario.endMark == undefined)
+                {
+                    // both startMark and endMark are undefined, don't provide either parameters
+                    window.performance.measure(scenario.name);
+
+                    // when startMark isn't provided to the measure() call, a DOMHighResTimeStamp corresponding
+                    // to the navigationStart attribute with a timebase of the same attribute is used; this is
+                    // equivalent to 0
+                    scenario.startTime = 0;
+
+                    // when endMark isn't provided to the measure() call, a DOMHighResTimeStamp corresponding to
+                    // the current time with a timebase of the navigationStart attribute is used
+                    scenario.duration = (new Date()) - window.performance.timing.navigationStart;
+                }
+                else if (scenario.startMark != undefined &amp;&amp; scenario.endMark == undefined)
+                {
+                    // only startMark is defined, provide startMark and don't provide endMark
+                    window.performance.measure(scenario.name, scenario.startMark);
+
+                    // when startMark is provided to the measure() call, the value of the mark whose name is
+                    // provided is used for the startMark
+                    scenario.startTime = startMarkValue;
+
+                    // when endMark isn't provided to the measure() call, a DOMHighResTimeStamp corresponding to
+                    // the current time with a timebase of the navigationStart attribute is used
+                    scenario.duration = window.performance.now() -
+                                                startMarkValue;
+                }
+                else if (scenario.startMark != undefined &amp;&amp; scenario.endMark != undefined)
+                {
+                    // both startMark and endMark are defined, provide both parameters
+                    window.performance.measure(scenario.name, scenario.startMark, scenario.endMark);
+
+                    // when startMark is provided to the measure() call, the value of the mark whose name is
+                    // provided is used for the startMark
+                    scenario.startTime = startMarkValue;
+
+                    // when endMark is provided to the measure() call, the value of the mark whose name is
+                    // provided is used for the startMark
+                    scenario.duration = endMarkValue - startMarkValue;
+                }
+            }
+
+            // test that expected measures are returned by getEntriesByName
+            for (var i in TEST_MEASURES)
+            {
+                entries = window.performance.getEntriesByName(TEST_MEASURES[i].name);
+                // for all test measures, the test will be validate the test measure against the first entry returned
+                // by getEntriesByName(), except for the last measure, where since it is a duplicate measure, the test
+                // will validate it against the second entry returned by getEntriesByName()
+                test_measure(entries[(i == 3 ? 1 : 0)],
+                            &quot;window.performance.getEntriesByName(\&quot;&quot; + TEST_MEASURES[i].name + &quot;\&quot;)[&quot; +
+                            (i == 3 ? 1 : 0) + &quot;]&quot;,
+                            TEST_MEASURES[i].name,
+                            TEST_MEASURES[i].startTime,
+                            TEST_MEASURES[i].duration);
+                TEST_MEASURES[i].entryMatch = entries[(i == 3 ? 1 : 0)];
+            }
+
+            // test that expected measures are returned by getEntriesByName with the entryType parameter provided
+            for (var i in TEST_MEASURES)
+            {
+                entries = window.performance.getEntriesByName(TEST_MEASURES[i].name, &quot;measure&quot;);
+
+                test_true(match_entries(entries[(i == 3 ? 1 : 0)], TEST_MEASURES[i].entryMatch),
+                          &quot;window.performance.getEntriesByName(\&quot;&quot; + TEST_MEASURES[i].name + &quot;\&quot;, \&quot;measure\&quot;)[&quot; +
+                          (i == 3 ? 1 : 0) + &quot;] returns an object containing the \&quot;&quot; + TEST_MEASURES[i].name +
+                          &quot;\&quot; measure in the correct order, and its value matches the \&quot;&quot; + TEST_MEASURES[i].name +
+                          &quot;\&quot; measure returned by window.performance.getEntriesByName(\&quot;&quot; + TEST_MEASURES[i].name +
+                          &quot;\&quot;)&quot;);
+            }
+
+            // test that expected measures are returned by getEntries
+            entries = get_test_entries(window.performance.getEntries(), &quot;measure&quot;);
+
+            test_measure_list(entries, &quot;window.performance.getEntries()&quot;, TEST_MEASURES);
+
+            // test that expected measures are returned by getEntriesByType
+            entries = window.performance.getEntriesByType(&quot;measure&quot;);
+
+            test_measure_list(entries, &quot;window.performance.getEntriesByType(\&quot;measure\&quot;)&quot;, TEST_MEASURES);
+
+            done();
+        }
+
+        function match_entries(entry1, entry2, threshold)
+        {
+            if (threshold == undefined)
+            {
+                threshold = 0;
+            }
+
+            var pass = true;
+
+            // match name
+            pass = pass &amp;&amp; (entry1.name == entry2.name);
+
+            // match startTime
+            pass = pass &amp;&amp; (Math.abs(entry1.startTime - entry2.startTime) &lt;= testThreshold);
+
+            // match entryType
+            pass = pass &amp;&amp; (entry1.entryType == entry2.entryType);
+
+            // match duration
+            pass = pass &amp;&amp; (Math.abs(entry1.duration - entry2.duration) &lt;= testThreshold);
+
+            return pass;
+        }
+
+        function test_measure(measureEntry, measureEntryCommand, expectedName, expectedStartTime, expectedDuration)
+        {
+            // test name
+            test_true(measureEntry.name == expectedName, measureEntryCommand + &quot;.name == \&quot;&quot; + expectedName + &quot;\&quot;&quot;);
+
+            // test startTime; since for a mark, the startTime is always equal to a mark's value or the value of a
+            // navigation timing attribute, the actual startTime should match the expected value exactly
+            test_true(Math.abs(measureEntry.startTime - expectedStartTime) == 0,
+                      measureEntryCommand + &quot;.startTime is correct&quot;);
+
+            // test entryType
+            test_true(measureEntry.entryType == &quot;measure&quot;, measureEntryCommand + &quot;.entryType == \&quot;measure\&quot;&quot;);
+
+            // test duration, allow for an acceptable threshold in the difference between the actual duration and the
+            // expected value for the duration
+            test_true(Math.abs(measureEntry.duration - expectedDuration) &lt;= testThreshold, measureEntryCommand +
+                      &quot;.duration is approximately correct (up to &quot; + testThreshold + &quot;ms difference allowed)&quot;);
+        }
+
+        function test_measure_list(measureEntryList, measureEntryListCommand, measureScenarios)
+        {
+            // give all entries a &quot;found&quot; property that can be set to ensure it isn't tested twice
+            for (var i in measureEntryList)
+            {
+                measureEntryList[i].found = false;
+            }
+
+            for (var i in measureScenarios)
+            {
+                measureScenarios[i].found = false;
+
+                for (var j in measureEntryList)
+                {
+                    if (match_entries(measureEntryList[j], measureScenarios[i]) &amp;&amp; !measureEntryList[j].found)
+                    {
+                        test_true(match_entries(measureEntryList[j], measureScenarios[i].entryMatch),
+                                  measureEntryListCommand + &quot; returns an object containing the \&quot;&quot; +
+                                  measureScenarios[i].name + &quot;\&quot; measure, and it's value matches the measure &quot; +
+                                  &quot;returned by window.performance.getEntriesByName(\&quot;&quot; + measureScenarios[i].name +
+                                  &quot;\&quot;)[&quot; + (i == 3 ? 1 : 0) + &quot;].&quot;);
+
+                        measureEntryList[j].found = true;
+                        measureScenarios[i].found = true;
+                        break;
+                    }
+                }
+
+                if (!measureScenarios[i].found)
+                {
+                    test_true(false,
+                              measureEntryListCommand + &quot; returns an object containing the \&quot;&quot; +
+                              measureScenarios[i].name + &quot;\&quot; measure.&quot;);
+                }
+            }
+
+            // verify order of output of getEntriesByType
+            var startTimeCurr = 0;
+            var pass = true;
+            for (var i in measureEntryList)
+            {
+                if (measureEntryList[i].startTime &lt; startTimeCurr)
+                {
+                    pass = false;
+                }
+                startTimeCurr = measureEntryList[i].startTime;
+            }
+            test_true(pass,
+                      measureEntryListCommand + &quot; returns an object containing all test &quot; +
+                      &quot;measures in order.&quot;);
+        }
+
+        function get_test_entries(entryList, entryType)
+        {
+            var testEntries = new Array();
+
+            // filter entryList
+            for (var i in entryList)
+            {
+                if (entryList[i].entryType == entryType)
+                {
+                    testEntries.push(entryList[i]);
+                }
+            }
+
+            return testEntries;
+        }
+    &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;onload_test();&quot;&gt;
+        &lt;h1&gt;Description&lt;/h1&gt;
+        &lt;p&gt;This test validates that the performance.measure() method is working properly. This test creates the
+           following measures to test this method:
+            &lt;ul&gt;
+                &lt;li&gt;&quot;measure_no_start_no_end&quot;: created using a measure() call without a startMark or endMark
+                    provided&lt;/li&gt;
+                &lt;li&gt;&quot;measure_start_no_end&quot;: created using a measure() call with only the startMark provided&lt;/li&gt;
+                &lt;li&gt;&quot;measure_start_end&quot;: created using a measure() call with both a startMark or endMark provided&lt;/li&gt;
+                &lt;li&gt;&quot;measure_no_start_no_end&quot;: duplicate of the first measure, used to confirm names can be re-used&lt;/li&gt;
+            &lt;/ul&gt;
+           After creating each measure, the existence of these measures is validated by calling
+           performance.getEntriesByName() (both with and without the entryType parameter provided),
+           performance.getEntriesByType(), and performance.getEntries()
+        &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="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_exceptions_navigation_timingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+CONSOLE MESSAGE: line 62: ReferenceError: Can't find variable: onload_test
+Description
+
+window.performance.measure() method throws a InvalidAccessError whenever a navigation timing attribute with a value of zero is provided as the startMark or endMark.
+
+
+Harness Error (FAIL), message = ReferenceError: Can't find variable: onload_test
+
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, throws a InvalidAccessError exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;, &quot;responseEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, throws a InvalidAccessError exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, throws a InvalidAccessError exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, throws a InvalidAccessError exception. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_exceptions_navigation_timinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta charset=&quot;UTF-8&quot; /&gt;
+        &lt;title&gt;window.performance User Timing measure() method is throwing the proper exceptions&lt;/title&gt;
+        &lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com/&quot; /&gt;
+        &lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/user-timing/#dom-performance-measure&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;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
+
+    &lt;script&gt;
+// test data
+var zeroedNavTimingAtt = undefined;
+
+setup(function () {
+   // for testing the INVALID_ACCESS_ERR exception, find a navigation timing attribute with a value of zero
+   for (var i in timingAttributes) {
+     if (window.performance.timing[timingAttributes[i]] == 0) {
+        zeroedNavTimingAtt = timingAttributes[i];
+     }
+   }
+   if (zeroedNavTimingAtt == undefined) {
+       throw new Error(&quot;A navigation timing attribute with a value of 0 was not found to test for the &quot; +
+                          &quot;INVALID_ACCESS_ERR exception thrown by window.performance.measure().&quot;)
+   }
+});
+
+test(function () {
+   assert_throws(&quot;InvalidAccessError&quot;, function () {
+       window.performance.measure(&quot;measure&quot;, zeroedNavTimingAtt);
+   });
+}, &quot;window.performance.measure(\&quot;measure\&quot;, \&quot;&quot; + zeroedNavTimingAtt + &quot;\&quot;), where \&quot;&quot; +
+                              zeroedNavTimingAtt + &quot;\&quot; is a navigation timing attribute with a value of 0, throws a &quot; +
+                              &quot;InvalidAccessError exception.&quot;);
+
+test(function () {
+   assert_throws(&quot;InvalidAccessError&quot;, function () {
+       window.performance.measure(&quot;measure&quot;, zeroedNavTimingAtt, &quot;responseEnd&quot;);
+   });
+}, &quot;window.performance.measure(\&quot;measure\&quot;, \&quot;&quot; + zeroedNavTimingAtt + &quot;\&quot;, &quot; +
+                              &quot;\&quot;responseEnd\&quot;), where \&quot;&quot; + zeroedNavTimingAtt + &quot;\&quot; is a navigation timing &quot; +
+                              &quot;attribute with a value of 0, throws a InvalidAccessError exception.&quot;);
+
+test(function () {
+   assert_throws(&quot;InvalidAccessError&quot;, function () {
+       window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, zeroedNavTimingAtt);
+   });
+}, &quot;window.performance.measure(\&quot;measure\&quot;, \&quot;navigationStart\&quot;, \&quot;&quot; + zeroedNavTimingAtt +
+                              &quot;\&quot;), where \&quot;&quot; + zeroedNavTimingAtt + &quot;\&quot; is a navigation timing attribute with a &quot; +
+                              &quot;value of 0, throws a InvalidAccessError exception.&quot;);
+
+test(function () {
+   assert_throws(&quot;InvalidAccessError&quot;, function () {
+       window.performance.measure(&quot;measure&quot;, zeroedNavTimingAtt, zeroedNavTimingAtt);
+   });
+}, &quot;window.performance.measure(\&quot;measure\&quot;, \&quot;&quot; + zeroedNavTimingAtt + &quot;\&quot;, \&quot;&quot; +
+                              zeroedNavTimingAtt + &quot;\&quot;), where \&quot;&quot; + zeroedNavTimingAtt + &quot;\&quot; is a navigation timing &quot; +
+                              &quot;attribute with a value of 0, throws a InvalidAccessError exception.&quot;);
+    &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;onload_test();&quot;&gt;
+        &lt;h1&gt;Description&lt;/h1&gt;
+        &lt;p&gt;&lt;code&gt;window.performance.measure()&lt;/code&gt; method throws a InvalidAccessError
+           whenever a navigation timing attribute with a value of zero is provided as the startMark or endMark.
+        &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="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_navigation_timingexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+Description
+
+This test validates that the performance.measure() method is working properly when navigation timing attributes are used in place of mark names. This test creates the following measures to test this method:
+
+&quot;measure_nav_start_no_end&quot;: created using a measure() call with a navigation timing attribute provided as the startMark and nothing provided as the endMark
+&quot;measure_nav_start_mark_end&quot;: created using a measure() call with a navigation timing attribute provided as the startMark and a mark name provided as the endMark
+&quot;measure_mark_start_nav_end&quot;: created using a measure() call with a mark name provided as the startMark and a navigation timing attribute provided as the endMark
+&quot;measure_nav_start_nav_end&quot;:created using a measure() call with a navigation timing attribute provided as both the startMark and endMark
+After creating each measure, the existence of these measures is validated by calling performance.getEntriesByName() with each measure name
+
+PASS window.performance is defined 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].name == &quot;measure_nav_start_no_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_no_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].name == &quot;measure_nav_start_mark_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_mark_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].name == &quot;measure_mark_start_nav_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_mark_start_nav_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].name == &quot;measure_nav_start_nav_end&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].startTime is correct 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].entryType == &quot;measure&quot; 
+PASS window.performance.getEntriesByName(&quot;measure_nav_start_nav_end&quot;)[0].duration is approximately correct (up to 20ms difference allowed) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_navigation_timinghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,204 @@
</span><ins>+
+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+    &lt;head&gt;
+        &lt;meta charset=&quot;UTF-8&quot; /&gt;
+        &lt;title&gt;window.performance User Timing clearMeasures() method is working properly with navigation timing
+               attributes&lt;/title&gt;
+        &lt;link rel=&quot;author&quot; title=&quot;Microsoft&quot; href=&quot;http://www.microsoft.com/&quot; /&gt;
+        &lt;link rel=&quot;help&quot; href=&quot;https://w3c.github.io/user-timing/#dom-performance-measure&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;resources/webperftestharness.js&quot;&gt;&lt;/script&gt;
+
+    &lt;script&gt;
+        // test data
+        var startMarkName = &quot;mark_start&quot;;
+        var startMarkValue;
+        var endMarkName = &quot;mark_end&quot;;
+        var endMarkValue;
+        var measures;
+        var testThreshold = 20;
+
+        // test measures
+        measureTestDelay = 200;
+        var TEST_MEASURES =
+        [
+            {
+                name:                   &quot;measure_nav_start_no_end&quot;,
+                startMark:              &quot;navigationStart&quot;,
+                endMark:                undefined,
+                exceptionTestMessage:   &quot;window.performance.measure(\&quot;measure_nav_start_no_end\&quot;, &quot; +
+                                        &quot;\&quot;navigationStart\&quot;) ran without throwing any exceptions.&quot;,
+                expectedStartTime:      undefined,
+                expectedDuration:       undefined,
+                entryMatch:             undefined
+            },
+            {
+                name:                   &quot;measure_nav_start_mark_end&quot;,
+                startMark:              &quot;navigationStart&quot;,
+                endMark:                &quot;mark_end&quot;,
+                exceptionTestMessage:   &quot;window.performance.measure(\&quot;measure_nav_start_end\&quot;, \&quot;navigationStart\&quot;, &quot; +
+                                        &quot;\&quot;mark_end\&quot;) ran without throwing any exceptions.&quot;,
+                expectedStartTime:      undefined,
+                expectedDuration:       undefined,
+                entryMatch:             undefined
+            },
+            {
+                name:                   &quot;measure_mark_start_nav_end&quot;,
+                startMark:              &quot;mark_start&quot;,
+                endMark:                &quot;responseEnd&quot;,
+                exceptionTestMessage:   &quot;window.performance.measure(\&quot;measure_start_nav_end\&quot;, \&quot;mark_start\&quot;, &quot; +
+                                        &quot;\&quot;responseEnd\&quot;) ran without throwing any exceptions.&quot;,
+                expectedStartTime:      undefined,
+                expectedDuration:       undefined,
+                entryMatch:             undefined
+            },
+            {
+                name:                   &quot;measure_nav_start_nav_end&quot;,
+                startMark:              &quot;navigationStart&quot;,
+                endMark:                &quot;responseEnd&quot;,
+                exceptionTestMessage:   &quot;window.performance.measure(\&quot;measure_nav_start_nav_end\&quot;, &quot; +
+                                        &quot;\&quot;navigationStart\&quot;, \&quot;responseEnd\&quot;) ran without throwing any exceptions.&quot;,
+                expectedStartTime:      undefined,
+                expectedDuration:       undefined,
+                entryMatch:             undefined
+            }
+        ];
+
+        setup({explicit_done: true});
+
+        test_namespace();
+
+        function onload_test()
+        {
+            // test for existance of User Timing and Performance Timeline interface
+            if (!has_required_interfaces())
+            {
+                test_true(false,
+                          &quot;The User Timing and Performance Timeline interfaces, which are required for this test, &quot; +
+                          &quot;are defined.&quot;);
+
+                done();
+            }
+            else
+            {
+                // create the start mark for the test measures
+                window.performance.mark(startMarkName);
+
+                // get the start mark's value
+                startMarkValue = window.performance.getEntriesByName(startMarkName)[0].startTime;
+
+                // create the test end mark using the test delay; this will allow for a significant difference between
+                // the mark values that should be represented in the duration of measures using these marks
+                setTimeout(measure_test_cb, measureTestDelay);
+            }
+        }
+
+        function measure_test_cb()
+        {
+            // create the end mark for the test measures
+            window.performance.mark(endMarkName);
+
+            // get the end mark's value
+            endMarkValue = window.performance.getEntriesByName(endMarkName)[0].startTime;
+
+            // loop through measure scenarios
+            for (var i in TEST_MEASURES)
+            {
+                var scenario = TEST_MEASURES[i];
+
+                if (scenario.startMark != undefined &amp;&amp; scenario.endMark == undefined)
+                {
+                    // only startMark is defined, provide startMark and don't provide endMark
+                    window.performance.measure(scenario.name, scenario.startMark);
+
+                    // when startMark is provided to the measure() call, the value of the mark or navigation
+                    // timing attribute whose name is provided is used for the startMark
+                    scenario.expectedStartTime = (timingAttributes.indexOf(scenario.startMark) != -1 ?
+                                                  window.performance.timing[scenario.startMark] -
+                                                  window.performance.timing.navigationStart :
+                                                  startMarkValue);
+
+                    // when endMark isn't provided to the measure() call, a DOMHighResTimeStamp corresponding to
+                    // the current time with a timebase of the navigationStart attribute is used
+                    scenario.expectedDuration = ((new Date()) - window.performance.timing.navigationStart) -
+                                                scenario.expectedStartTime;
+                }
+                else if (scenario.startMark != undefined &amp;&amp; scenario.endMark != undefined)
+                {
+                    // both startMark and endMark are defined, provide both parameters
+                    window.performance.measure(scenario.name, scenario.startMark, scenario.endMark);
+
+                    // when startMark is provided to the measure() call, the value of the mark or navigation
+                    // timing attribute whose name is provided is used for the startMark
+                    scenario.expectedStartTime = (timingAttributes.indexOf(scenario.startMark) != -1 ?
+                                                  window.performance.timing[scenario.startMark] -
+                                                  window.performance.timing.navigationStart :
+                                                  startMarkValue);
+
+                    // when endMark is provided to the measure() call, the value of the mark whose name is
+                    // provided is used for the startMark
+                    scenario.expectedDuration = (timingAttributes.indexOf(scenario.endMark) != -1 ?
+                                                 window.performance.timing[scenario.endMark] -
+                                                 window.performance.timing.navigationStart :
+                                                 endMarkValue) - scenario.expectedStartTime;
+                }
+            }
+
+            // test the test measures are returned by getEntriesByName
+            for (var i in TEST_MEASURES)
+            {
+                entries = window.performance.getEntriesByName(TEST_MEASURES[i].name);
+                test_measure(entries[0],
+                            &quot;window.performance.getEntriesByName(\&quot;&quot; + TEST_MEASURES[i].name + &quot;\&quot;)[0]&quot;,
+                            TEST_MEASURES[i].name,
+                            TEST_MEASURES[i].expectedStartTime,
+                            TEST_MEASURES[i].expectedDuration);
+                TEST_MEASURES[i].entryMatch = entries[0];
+            }
+
+            done();
+        }
+
+        function test_measure(measureEntry, measureEntryCommand, expectedName, expectedStartTime, expectedDuration)
+        {
+            // test name
+            test_true(measureEntry.name == expectedName, measureEntryCommand + &quot;.name == \&quot;&quot; + expectedName + &quot;\&quot;&quot;);
+
+            // test startTime; since for a mark, the startTime is always equal to a mark's value or the value of a
+            // navigation timing attribute, the actual startTime should match the expected value exactly
+            test_true(Math.abs(measureEntry.startTime - expectedStartTime) == 0,
+                      measureEntryCommand + &quot;.startTime is correct&quot;);
+
+            // test entryType
+            test_true(measureEntry.entryType == &quot;measure&quot;, measureEntryCommand + &quot;.entryType == \&quot;measure\&quot;&quot;);
+
+            // test duration, allow for an acceptable threshold in the difference between the actual duration and the
+            // expected value for the duration
+            test_true(Math.abs(measureEntry.duration - expectedDuration) &lt;= testThreshold, measureEntryCommand +
+                      &quot;.duration is approximately correct (up to &quot; + testThreshold + &quot;ms difference allowed)&quot;);
+        }
+    &lt;/script&gt;
+    &lt;/head&gt;
+    &lt;body onload=&quot;onload_test();&quot;&gt;
+        &lt;h1&gt;Description&lt;/h1&gt;
+        &lt;p&gt;This test validates that the performance.measure() method is working properly when navigation timing
+           attributes are used in place of mark names. This test creates the following measures to test this method:
+            &lt;ul&gt;
+                &lt;li&gt;&quot;measure_nav_start_no_end&quot;: created using a measure() call with a navigation timing attribute
+                    provided as the startMark and nothing provided as the endMark&lt;/li&gt;
+                &lt;li&gt;&quot;measure_nav_start_mark_end&quot;: created using a measure() call with a navigation timing attribute
+                    provided as the startMark and a mark name provided as the endMark&lt;/li&gt;
+                &lt;li&gt;&quot;measure_mark_start_nav_end&quot;: created using a measure() call with a mark name provided as the
+                    startMark and a navigation timing attribute provided as the endMark&lt;/li&gt;
+                &lt;li&gt;&quot;measure_nav_start_nav_end&quot;:created using a measure() call with a navigation timing attribute
+                    provided as both the startMark and endMark&lt;/li&gt;
+            &lt;/ul&gt;
+           After creating each measure, the existence of these measures is validated by calling
+           performance.getEntriesByName() with each measure name
+        &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="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_erranyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Create a mark &quot;existing_mark&quot; 
+PASS self.performance.measure(&quot;measure&quot;, &quot;mark&quot;), where &quot;mark&quot; is a non-existent mark, throws a SyntaxError exception. 
+PASS self.performance.measure(&quot;measure&quot;, &quot;mark&quot;, &quot;existing_mark&quot;), where &quot;mark&quot; is a non-existent mark, throws a SyntaxError exception. 
+PASS self.performance.measure(&quot;measure&quot;, &quot;existing_mark&quot;, &quot;mark&quot;), where &quot;mark&quot; is a non-existent mark, throws a SyntaxError exception. 
+PASS self.performance.measure(&quot;measure&quot;, &quot;mark&quot;, &quot;mark&quot;), where &quot;mark&quot; is a non-existent mark, throws a SyntaxError exception. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_erranyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_erranyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+test(function () {
+   self.performance.mark(&quot;existing_mark&quot;);
+   var entries = self.performance.getEntriesByName(&quot;existing_mark&quot;);
+   assert_equals(entries.length, 1);
+   self.performance.measure(&quot;measure&quot;, &quot;existing_mark&quot;);
+}, &quot;Create a mark \&quot;existing_mark\&quot;&quot;);
+test(function () {
+   assert_throws(new SyntaxError(), function () {
+       self.performance.measure(&quot;measure&quot;, &quot;mark&quot;);
+   });
+}, &quot;self.performance.measure(\&quot;measure\&quot;, \&quot;mark\&quot;), where \&quot;mark\&quot; is a non-existent mark, &quot; +
+                          &quot;throws a SyntaxError exception.&quot;);
+
+test(function () {
+   assert_throws(new SyntaxError(), function () {
+       self.performance.measure(&quot;measure&quot;, &quot;mark&quot;, &quot;existing_mark&quot;);
+   });
+}, &quot;self.performance.measure(\&quot;measure\&quot;, \&quot;mark\&quot;, \&quot;existing_mark\&quot;), where \&quot;mark\&quot; is a &quot; +
+                          &quot;non-existent mark, throws a SyntaxError exception.&quot;);
+
+test(function () {
+   assert_throws(new SyntaxError(), function () {
+       self.performance.measure(&quot;measure&quot;, &quot;existing_mark&quot;, &quot;mark&quot;);
+   });
+}, &quot;self.performance.measure(\&quot;measure\&quot;, \&quot;existing_mark\&quot;, \&quot;mark\&quot;), where \&quot;mark\&quot; &quot; +
+                            &quot;is a non-existent mark, throws a SyntaxError exception.&quot;);
+
+test(function () {
+   assert_throws(new SyntaxError(), function () {
+       self.performance.measure(&quot;measure&quot;, &quot;mark&quot;, &quot;mark&quot;);
+   });
+}, &quot;self.performance.measure(\&quot;measure\&quot;, \&quot;mark\&quot;, \&quot;mark\&quot;), where \&quot;mark\&quot; is a &quot; +
+                          &quot;non-existent mark, throws a SyntaxError exception.&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_errworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingmeasure_syntax_errworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</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 (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/resources/webperftestharness.js        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/resources/webperftestharness.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -14,26 +14,27 @@
</span><span class="cx"> 
</span><span class="cx"> var performanceNamespace = self.performance;
</span><span class="cx"> var timingAttributes = [
</span><del>-    'connectEnd',
-    'connectStart',
-    'domComplete',
-    'domContentLoadedEventEnd',
-    'domContentLoadedEventStart',
-    'domInteractive',
-    'domLoading',
-    'domainLookupEnd',
-    'domainLookupStart',
-    'fetchStart',
-    'loadEventEnd',
-    'loadEventStart',
-    'navigationStart',
-    'redirectEnd',
-    'redirectStart',
-    'requestStart',
-    'responseEnd',
-    'responseStart',
-    'unloadEventEnd',
-    'unloadEventStart'
</del><ins>+    &quot;navigationStart&quot;,
+    &quot;unloadEventStart&quot;,
+    &quot;unloadEventEnd&quot;,
+    &quot;redirectStart&quot;,
+    &quot;redirectEnd&quot;,
+    &quot;fetchStart&quot;,
+    &quot;domainLookupStart&quot;,
+    &quot;domainLookupEnd&quot;,
+    &quot;connectStart&quot;,
+    &quot;connectEnd&quot;,
+    &quot;secureConnectionStart&quot;,
+    &quot;requestStart&quot;,
+    &quot;responseStart&quot;,
+    &quot;responseEnd&quot;,
+    &quot;domLoading&quot;,
+    &quot;domInteractive&quot;,
+    &quot;domContentLoadedEventStart&quot;,
+    &quot;domContentLoadedEventEnd&quot;,
+    &quot;domComplete&quot;,
+    &quot;loadEventStart&quot;,
+    &quot;loadEventEnd&quot;
</ins><span class="cx"> ];
</span><span class="cx"> 
</span><span class="cx"> var namespace_check = false;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_mark_exceptionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -4,44 +4,46 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> PASS window.performance is defined 
</span><del>-PASS window.performance.mark(&quot;connectEnd&quot;) threw an exception. 
-PASS window.performance.mark(&quot;connectEnd&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;connectStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;connectStart&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domComplete&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domComplete&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domContentLoadedEventEnd&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domContentLoadedEventEnd&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domContentLoadedEventStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domContentLoadedEventStart&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domInteractive&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domInteractive&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domLoading&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domLoading&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domainLookupEnd&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domainLookupEnd&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;domainLookupStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;domainLookupStart&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;fetchStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;fetchStart&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;loadEventEnd&quot;) threw an exception. 
-PASS window.performance.mark(&quot;loadEventEnd&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;loadEventStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;loadEventStart&quot;) threw a SYNTAX_ERR exception. 
</del><span class="cx"> PASS window.performance.mark(&quot;navigationStart&quot;) threw an exception. 
</span><span class="cx"> PASS window.performance.mark(&quot;navigationStart&quot;) threw a SYNTAX_ERR exception. 
</span><ins>+PASS window.performance.mark(&quot;unloadEventStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;unloadEventStart&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;unloadEventEnd&quot;) threw an exception. 
+PASS window.performance.mark(&quot;unloadEventEnd&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;redirectStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;redirectStart&quot;) threw a SYNTAX_ERR exception. 
</ins><span class="cx"> PASS window.performance.mark(&quot;redirectEnd&quot;) threw an exception. 
</span><span class="cx"> PASS window.performance.mark(&quot;redirectEnd&quot;) threw a SYNTAX_ERR exception. 
</span><del>-PASS window.performance.mark(&quot;redirectStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;redirectStart&quot;) threw a SYNTAX_ERR exception. 
</del><ins>+PASS window.performance.mark(&quot;fetchStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;fetchStart&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;domainLookupStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domainLookupStart&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;domainLookupEnd&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domainLookupEnd&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;connectStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;connectStart&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;connectEnd&quot;) threw an exception. 
+PASS window.performance.mark(&quot;connectEnd&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;secureConnectionStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;secureConnectionStart&quot;) threw a SYNTAX_ERR exception. 
</ins><span class="cx"> PASS window.performance.mark(&quot;requestStart&quot;) threw an exception. 
</span><span class="cx"> PASS window.performance.mark(&quot;requestStart&quot;) threw a SYNTAX_ERR exception. 
</span><ins>+PASS window.performance.mark(&quot;responseStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;responseStart&quot;) threw a SYNTAX_ERR exception. 
</ins><span class="cx"> PASS window.performance.mark(&quot;responseEnd&quot;) threw an exception. 
</span><span class="cx"> PASS window.performance.mark(&quot;responseEnd&quot;) threw a SYNTAX_ERR exception. 
</span><del>-PASS window.performance.mark(&quot;responseStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;responseStart&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;unloadEventEnd&quot;) threw an exception. 
-PASS window.performance.mark(&quot;unloadEventEnd&quot;) threw a SYNTAX_ERR exception. 
-PASS window.performance.mark(&quot;unloadEventStart&quot;) threw an exception. 
-PASS window.performance.mark(&quot;unloadEventStart&quot;) threw a SYNTAX_ERR exception. 
</del><ins>+PASS window.performance.mark(&quot;domLoading&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domLoading&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;domInteractive&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domInteractive&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;domContentLoadedEventStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domContentLoadedEventStart&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;domContentLoadedEventEnd&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domContentLoadedEventEnd&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;domComplete&quot;) threw an exception. 
+PASS window.performance.mark(&quot;domComplete&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;loadEventStart&quot;) threw an exception. 
+PASS window.performance.mark(&quot;loadEventStart&quot;) threw a SYNTAX_ERR exception. 
+PASS window.performance.mark(&quot;loadEventEnd&quot;) threw an exception. 
+PASS window.performance.mark(&quot;loadEventEnd&quot;) threw a SYNTAX_ERR exception. 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingtest_user_timing_measure_exceptionsexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -12,12 +12,12 @@
</span><span class="cx"> PASS window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, &quot;mark&quot;), where &quot;mark&quot; is a non-existent mark, threw a SYNTAX_ERR exception. 
</span><span class="cx"> PASS window.performance.measure(&quot;measure&quot;, &quot;mark&quot;, &quot;mark&quot;), where &quot;mark&quot; is a non-existent mark, threw an exception. 
</span><span class="cx"> PASS window.performance.measure(&quot;measure&quot;, &quot;mark&quot;, &quot;mark&quot;), where &quot;mark&quot; is a non-existent mark, threw a SYNTAX_ERR exception. 
</span><del>-PASS window.performance.measure(&quot;measure&quot;, &quot;unloadEventStart&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;unloadEventStart&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;unloadEventStart&quot;, &quot;responseEnd&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;unloadEventStart&quot;, &quot;responseEnd&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, &quot;unloadEventStart&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, &quot;unloadEventStart&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;unloadEventStart&quot;, &quot;unloadEventStart&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an exception. 
-PASS window.performance.measure(&quot;measure&quot;, &quot;unloadEventStart&quot;, &quot;unloadEventStart&quot;), where &quot;unloadEventStart&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
</del><ins>+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;, &quot;responseEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;, &quot;responseEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;navigationStart&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an exception. 
+PASS window.performance.measure(&quot;measure&quot;, &quot;loadEventEnd&quot;, &quot;loadEventEnd&quot;), where &quot;loadEventEnd&quot; is a navigation timing attribute with a value of 0, threw an INVALID_ACCESS_ERR exception. 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsanyexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS self.performance.mark is defined. 
+PASS self.performance.clearMarks is defined. 
+PASS self.performance.measure is defined. 
+PASS self.performance.clearMeasures is defined. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsanyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsanyjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.js (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.js        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+test(function() {
+    assert_not_equals(self.performance.mark, undefined);
+}, &quot;self.performance.mark is defined.&quot;);
+test(function() {
+    assert_not_equals(self.performance.clearMarks, undefined);
+}, &quot;self.performance.clearMarks is defined.&quot;);
+test(function() {
+    assert_not_equals(self.performance.measure, undefined);
+}, &quot;self.performance.measure is defined.&quot;);
+test(function() {
+    assert_not_equals(self.performance.clearMeasures, undefined);
+}, &quot;self.performance.clearMeasures is defined.&quot;);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsworkerexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+Harness Error (FAIL), message = Error in worker: [object Event]
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertiminguser_timing_existsworkerhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.worker.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!-- This file is required for WebKit test infrastructure to run the templated test --&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsusertimingw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/user-timing/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -16,17 +16,21 @@
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/user-timing/OWNERS
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_marks.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_all_measures.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_mark.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_non_existent_measure.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_mark.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/clear_one_measure.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/entry_type.any.js
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/user-timing/idlharness.html
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_marks.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_clear_measures.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_entry_type.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_exists.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_with_timing_attributes.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_with_timing_attributes.js
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_and_measure_exception_when_invoke_without_parameter.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_exceptions.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_mark_with_name_of_navigation_timing_optional_attribute.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_exceptions.html
-/LayoutTests/imported/w3c/web-platform-tests/user-timing/test_user_timing_measure_navigation_timing.html
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.html
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_with_timing_attributes.worker.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/invoke_without_parameter.html
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/mark_exceptions.html
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure.html
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_exceptions_navigation_timing.html
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_navigation_timing.html
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/measure_syntax_err.any.js
+/LayoutTests/imported/w3c/web-platform-tests/user-timing/user_timing_exists.any.js
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -23,11 +23,12 @@
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/ci_lint.sh
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/ci_stability.sh
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/config.default.json
</span><del>-/LayoutTests/imported/w3c/web-platform-tests/diff-manifest.py
</del><ins>+/LayoutTests/imported/w3c/web-platform-tests/config.json
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/lint
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/lint.whitelist
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/manifest
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/serve
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/serve.py
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/serve.pyc
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/server-side.md
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/update-built-tests.sh
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcOWNERS"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/OWNERS (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/OWNERS        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/OWNERS        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,4 @@
</span><span class="cx"> @dontcallmedom
</span><span class="cx"> @alvestrand
</span><span class="cx"> @phoglund
</span><ins>+@agouaillard
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioncanTrickleIceCandidatesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL canTrickleIceCandidates property is null prior to setRemoteDescription assert_equals: canTrickleIceCandidates property is null expected (object) null but got (undefined) undefined
+FAIL canTrickleIceCandidates property is true after setRemoteDescription with a=ice-options:trickle assert_true: canTrickleIceCandidates property is true after setRemoteDescription expected true got undefined
+FAIL canTrickleIceCandidates property is false after setRemoteDescription without a=ice-options:trickle assert_false: canTrickleIceCandidates property is false after setRemoteDescription expected false got undefined
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioncanTrickleIceCandidateshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
+  &lt;title&gt;RTCPeerConnection canTrickleIceCandidates tests&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;!--  These files are in place when executing on W3C.  --&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 type=&quot;text/javascript&quot;&gt;
+  // tests support for RTCPeerConnection.canTrickleIceCandidates:
+  // http://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-cantrickleicecandidates
+  const sdp = 'v=0\r\n' +
+      'o=- 166855176514521964 2 IN IP4 127.0.0.1\r\n' +
+      's=-\r\n' +
+      't=0 0\r\n' +
+      'a=ice-options:trickle\r\n' +
+      'm=audio 9 UDP/TLS/RTP/SAVPF 111\r\n' +
+      'c=IN IP4 0.0.0.0\r\n' +
+      'a=rtcp:9 IN IP4 0.0.0.0\r\n' +
+      'a=ice-ufrag:someufrag\r\n' +
+      'a=ice-pwd:somelongpwdwithenoughrandomness\r\n' +
+      'a=fingerprint:sha-256 8C:71:B3:8D:A5:38:FD:8F:A4:2E:A2:65:6C:86:52:BC:E0:6E:94:F2:9F:7C:4D:B5:DF:AF:AA:6F:44:90:8D:F4\r\n' +
+      'a=setup:actpass\r\n' +
+      'a=rtcp-mux\r\n' +
+      'a=mid:mid1\r\n' +
+      'a=sendonly\r\n' +
+      'a=msid:stream1 track1\r\n' +
+      'a=ssrc:1001 cname:some\r\n' +
+      'a=rtpmap:111 opus/48000/2\r\n';
+
+  test(function() {
+    var pc = new RTCPeerConnection();
+    assert_equals(pc.canTrickleIceCandidates, null, 'canTrickleIceCandidates property is null');
+  }, 'canTrickleIceCandidates property is null prior to setRemoteDescription');
+
+  promise_test(function() {
+    var pc = new RTCPeerConnection();
+
+    return pc.setRemoteDescription(new RTCSessionDescription({type: 'offer', sdp: sdp}))
+    .then(function() {
+      assert_true(pc.canTrickleIceCandidates, 'canTrickleIceCandidates property is true after setRemoteDescription');
+    })
+  }, 'canTrickleIceCandidates property is true after setRemoteDescription with a=ice-options:trickle');
+
+  promise_test(function() {
+    var pc = new RTCPeerConnection();
+
+    return pc.setRemoteDescription(new RTCSessionDescription({type: 'offer', sdp: sdp.replace('a=ice-options:trickle\r\n', '')}))
+    .then(function() {
+      assert_false(pc.canTrickleIceCandidates, 'canTrickleIceCandidates property is false after setRemoteDescription');
+    })
+  }, 'canTrickleIceCandidates property is false after setRemoteDescription without a=ice-options:trickle');
+&lt;/script&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioniceGatheringStateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Tests that the ICE gathering state ends up as &quot;completed&quot; after applying a local offer. Test timed out
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectioniceGatheringStatehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+&lt;head&gt;
+  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
+  &lt;title&gt;RTCPeerConnection ICEGatheringState tests&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;!--  These files are in place when executing on W3C.  --&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 type=&quot;text/javascript&quot;&gt;
+  async_test(function(test) {
+    var pc = new RTCPeerConnection(null);
+
+    pc.onicegatheringstatechange = test.step_func(function(event) {
+      if (pc.iceGatheringState === 'complete') {
+        test.done();
+      }
+    });
+    pc.createOffer({offerToReceiveAudio: 1})
+    .then(offer =&gt; pc.setLocalDescription(offer))
+    .catch(test.step_func(function(e) {
+      assert_unreached('Error ' + e.name + ': ' + e.message);
+    }));
+  }, 'Tests that the ICE gathering state ends up as &quot;completed&quot; after applying a local offer.');
+&lt;/script&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcconfigurationicecandidatepoolsizeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,9 +1,9 @@
</span><span class="cx"> 
</span><del>-PASS Setting iceCandidatePoolSize to 10 
-PASS Setting iceCandidatePoolSize to 0 
-PASS Setting iceCandidatePoolSize to null 
-PASS Setting iceCandidatePoolSize to undefined 
-PASS Setting iceCandidatePoolSize to -1 
-PASS Setting iceCandidatePoolSize to 1000 
-PASS Setting iceCandidatePoolSize to string 
</del><ins>+PASS Setting iceCandidatePoolSize to a valid value: 10 
+PASS Setting iceCandidatePoolSize to a valid value: 0 
+PASS Setting iceCandidatePoolSize to a valid value: null 
+PASS Setting iceCandidatePoolSize to a valid value: undefined 
+PASS Setting iceCandidatePoolSize to an invalid value: -1 
+PASS Setting iceCandidatePoolSize to an invalid value: 1000 
+PASS Setting iceCandidatePoolSize to an invalid value: string 
</ins><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcconfigurationicecandidatepoolsizehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -7,26 +7,29 @@
</span><span class="cx"> &lt;/head&gt;
</span><span class="cx"> &lt;body&gt;
</span><span class="cx"> &lt;script&gt;
</span><del>-function testICECandidatePoolSize(size, shouldThrow, expectedSize)
</del><ins>+function testValidPoolSize(size, expectedSize)
</ins><span class="cx"> {
</span><span class="cx">     test(function() {
</span><del>-        if (shouldThrow) {
-            assert_throws(new TypeError(), () =&gt; new RTCPeerConnection({iceCandidatePoolSize: size}))
-            return
-        }
</del><span class="cx">         var pc = new RTCPeerConnection({iceCandidatePoolSize: size})
</span><span class="cx">         assert_equals(pc.getConfiguration().iceCandidatePoolSize, expectedSize !== undefined ? expectedSize : size)
</span><del>-    }, &quot;Setting iceCandidatePoolSize to &quot; + size)
</del><ins>+    }, &quot;Setting iceCandidatePoolSize to a valid value: &quot; + size)
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-testICECandidatePoolSize(10)
-testICECandidatePoolSize(0)
-testICECandidatePoolSize(null, false, 0)
-testICECandidatePoolSize(undefined, false, 0)
</del><ins>+function testInvalidPoolSize(size)
+{
+    test(function() {
+        assert_throws(new TypeError(), () =&gt; new RTCPeerConnection({iceCandidatePoolSize: size}))
+    }, &quot;Setting iceCandidatePoolSize to an invalid value: &quot; + size)
+}
</ins><span class="cx"> 
</span><del>-testICECandidatePoolSize(-1, true)
-testICECandidatePoolSize(1000, true)
-testICECandidatePoolSize(&quot;string&quot;, true)
</del><ins>+testValidPoolSize(10)
+testValidPoolSize(0)
+testValidPoolSize(null, 0)
+testValidPoolSize(undefined, 0)
+
+testInvalidPoolSize(-1)
+testInvalidPoolSize(1000)
+testInvalidPoolSize(&quot;string&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="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcpeerconnectionidlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -23,7 +23,7 @@
</span><span class="cx"> PASS RTCPeerConnection interface: attribute remoteDescription 
</span><span class="cx"> PASS RTCPeerConnection interface: attribute currentRemoteDescription 
</span><span class="cx"> PASS RTCPeerConnection interface: attribute pendingRemoteDescription 
</span><del>-PASS RTCPeerConnection interface: operation addIceCandidate([object Object],[object Object]) 
</del><ins>+PASS RTCPeerConnection interface: operation addIceCandidate(RTCIceCandidate) 
</ins><span class="cx"> PASS RTCPeerConnection interface: attribute signalingState 
</span><span class="cx"> PASS RTCPeerConnection interface: attribute iceGatheringState 
</span><span class="cx"> PASS RTCPeerConnection interface: attribute iceConnectionState 
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> PASS RTCPeerConnection interface: pc must inherit property &quot;currentRemoteDescription&quot; with the proper type (8) 
</span><span class="cx"> PASS RTCPeerConnection interface: pc must inherit property &quot;pendingRemoteDescription&quot; with the proper type (9) 
</span><span class="cx"> PASS RTCPeerConnection interface: pc must inherit property &quot;addIceCandidate&quot; with the proper type (10) 
</span><del>-PASS RTCPeerConnection interface: calling addIceCandidate([object Object],[object Object]) on pc with too few arguments must throw TypeError 
</del><ins>+PASS RTCPeerConnection interface: calling addIceCandidate(RTCIceCandidate) on pc with too few arguments must throw TypeError 
</ins><span class="cx"> FAIL RTCPeerConnection interface: pc must inherit property &quot;signalingState&quot; with the proper type (11) Unrecognized type RTCSignalingState
</span><span class="cx"> FAIL RTCPeerConnection interface: pc must inherit property &quot;iceGatheringState&quot; with the proper type (12) Unrecognized type RTCIceGatheringState
</span><span class="cx"> FAIL RTCPeerConnection interface: pc must inherit property &quot;iceConnectionState&quot; with the proper type (13) Unrecognized type RTCIceConnectionState
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionrtcpeerconnectionidlhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -33,7 +33,7 @@
</span><span class="cx">     readonly    attribute RTCSessionDescription? remoteDescription;
</span><span class="cx">     readonly    attribute RTCSessionDescription? currentRemoteDescription;
</span><span class="cx">     readonly    attribute RTCSessionDescription? pendingRemoteDescription;
</span><del>-    Promise&lt;void&gt;                  addIceCandidate ((RTCIceCandidateInit or RTCIceCandidate) candidate);
</del><ins>+    Promise&lt;void&gt;                  addIceCandidate (RTCIceCandidate candidate);
</ins><span class="cx">     readonly    attribute RTCSignalingState      signalingState;
</span><span class="cx">     readonly    attribute RTCIceGatheringState   iceGatheringState;
</span><span class="cx">     readonly    attribute RTCIceConnectionState  iceConnectionState;
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestswebrtcrtcpeerconnectionw3cimportlog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/w3c-import.log (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/w3c-import.log        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/w3c-import.log        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -15,6 +15,9 @@
</span><span class="cx"> None
</span><span class="cx"> ------------------------------------------------------------------------
</span><span class="cx"> List of files:
</span><ins>+/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/canTrickleIceCandidates.html
+/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/iceGatheringState.html
+/LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcconfiguration-icecandidatepoolsize.html
</ins><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html
</span><span class="cx"> /LayoutTests/imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/setRemoteDescription.html
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestsdomeventsEventTargetdispatchEventexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+CONSOLE MESSAGE: line 60: Error
+
+PASS Calling dispatchEvent(null). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (AnimationEvent). The operation is not supported.
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (BeforeUnloadEvent). The operation is not supported.
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (CloseEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (CompositionEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (CustomEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (DeviceMotionEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (DeviceOrientationEvent). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (DragEvent). The operation is not supported.
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (ErrorEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (Event). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (Events). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (FocusEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (HashChangeEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (HTMLEvents). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (IDBVersionChangeEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (KeyboardEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MessageEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MouseEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MouseEvents). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (PageTransitionEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (PopStateEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (StorageEvent). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (SVGEvents). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (TextEvent). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (TouchEvent). The operation is not supported.
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (TrackEvent). The operation is not supported.
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (TransitionEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (UIEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (UIEvents). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (WebGLContextEvent). The operation is not supported.
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (WheelEvent). 
+PASS If the event's dispatch flag is set, an InvalidStateError must be thrown. 
+PASS Exceptions from event listeners must not be propagated. 
+PASS Event listeners added during dispatch should be called 
+PASS Event listeners should be called in order of addition 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2importedw3cwebplatformtestshtmlbrowsersthewindowobjectapisforcreatingandnavigatingbrowsingcontextsbynameopenfeaturestokenization001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-001-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+
+FAIL tokenization should skip window features separators before `name` assert_equals: &quot; noopener&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;about&quot;. Protocols must match.
+ with type object]
+FAIL feature `name` should be converted to ASCII lowercase assert_equals: &quot;NOOPENER&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;about&quot;. Protocols must match.
+ with type object]
+FAIL after `name`, tokenization should skip window features separators that are not &quot;=&quot; or &quot;,&quot; assert_equals: &quot;noopener&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;about&quot;. Protocols must match.
+ with type object]
+FAIL Tokenizing should ignore window feature separators except &quot;,&quot; after initial &quot;=&quot; and before value assert_equals: &quot;noopener=  yes&quot; should activate feature &quot;noopener&quot; expected null but got [stringifying object threw SecurityError (DOM Exception 18): 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;about&quot;. Protocols must match.
+ with type object]
+FAIL Tokenizing should read characters until first window feature separator as `value` assert_equals: &quot;noopener=noopener&quot; should set &quot;noopener&quot; expected null but got object &quot;[object Window]&quot;
+FAIL &quot;noopener&quot; should be based on name (key), not value assert_equals: &quot;noopener=false&quot; should activate feature &quot;noopener&quot; expected null but got object &quot;[object Window]&quot;
+PASS invalid feature names should not tokenize as &quot;noopener&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/TestExpectations (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/TestExpectations        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/platform/mac/TestExpectations        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1545,7 +1545,6 @@
</span><span class="cx"> [ ElCapitan ] http/tests/inspector/network/resource-request-headers.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> # &lt;rdar://problem/30610988&gt;
</span><del>-[ Sierra+ ] imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin-worker.html [ Failure ]
</del><span class="cx"> [ Sierra+ ] imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-cross-origin.html [ Failure ]
</span><span class="cx"> [ Sierra+ ] imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count-worker.html [ Failure ]
</span><span class="cx"> [ Sierra+ ] imported/w3c/web-platform-tests/fetch/api/redirect/redirect-count.html [ Failure ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/TestExpectations        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -323,6 +323,9 @@
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/165589 pointer-lock/lock-lost-on-esc-in-fullscreen.html [ Skip ]
</span><span class="cx"> 
</span><ins>+imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors.html [ Failure ]
+imported/w3c/web-platform-tests/html/webappapis/timers/negative-settimeout.html [ Failure ]
+
</ins><span class="cx"> # webkit.org/b/163585
</span><span class="cx"> media/track/track-cues-cuechange.html [ Pass Crash ]
</span><span class="cx"> media/track/track-cue-rendering-horizontal.html [ Pass Crash ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcache304updateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/304-update-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS HTTP cache updates returned headers from a Last-Modified 304. 
+FAIL HTTP cache updates stored headers from a Last-Modified 304. assert_less_than: Response used expected a number less than 3 but got 3
+PASS HTTP cache updates returned headers from a ETag 304. 
+FAIL HTTP cache updates stored headers from a ETag 304. assert_less_than: Response used expected a number less than 3 but got 3
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcacheccrequestexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/cc-request-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=0. 
+PASS HTTP cache doesn't use aged but fresh response when request contains Cache-Control: max-age=1. 
+PASS HTTP cache doesn't use fresh response with Age header when request contains Cache-Control: max-age that is greater than remaining freshness. 
+FAIL HTTP cache does use aged stale response when request contains Cache-Control: max-stale that permits its use. assert_less_than: Response used expected a number less than 2 but got 2
+FAIL HTTP cache does reuse stale response with Age header when request contains Cache-Control: max-stale that permits its use. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache doesn't reuse fresh response when request contains Cache-Control: min-fresh that wants it fresher. 
+PASS HTTP cache doesn't reuse fresh response with Age header when request contains Cache-Control: min-fresh that wants it fresher. 
+PASS HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-cache. 
+PASS HTTP cache validates fresh response with Last-Modified when request contains Cache-Control: no-cache. 
+PASS HTTP cache validates fresh response with ETag when request contains Cache-Control: no-cache. 
+PASS HTTP cache doesn't reuse fresh response when request contains Cache-Control: no-store. 
+FAIL HTTP cache generates 504 status code when nothing is in cache and request contains Cache-Control: only-if-cached. promise_test: Unhandled rejection with value: object &quot;TypeError: Type error&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcacheheuristicexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/heuristic-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+
+FAIL HTTP cache reuses an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is present. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache does not reuse an unknown response with Last-Modified based upon heuristic freshness when Cache-Control: public is not present. 
+PASS HTTP cache reuses a 200 OK response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache reuses a 203 Non-Authoritative Information response with Last-Modified based upon heuristic freshness. 
+FAIL HTTP cache reuses a 204 No Content response with Last-Modified based upon heuristic freshness. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache reuses a 404 Not Found response with Last-Modified based upon heuristic freshness. 
+FAIL HTTP cache reuses a 405 Method Not Allowed response with Last-Modified based upon heuristic freshness. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache reuses a 410 Gone response with Last-Modified based upon heuristic freshness. 
+FAIL HTTP cache reuses a 414 URI Too Long response with Last-Modified based upon heuristic freshness. assert_less_than: Response used expected a number less than 2 but got 2
+FAIL HTTP cache reuses a 501 Not Implemented response with Last-Modified based upon heuristic freshness. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache does not use a 201 Created response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 202 Accepted response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 403 Forbidden response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 502 Bad Gateway response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 503 Service Unavailable response with Last-Modified based upon heuristic freshness. 
+PASS HTTP cache does not use a 504 Gateway Timeout response with Last-Modified based upon heuristic freshness. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcacheinvalidateexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/invalidate-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+FAIL HTTP cache invalidates after a successful response from a POST assert_equals: Response used expected 3 but got 1
+PASS HTTP cache does not invalidate after a failed response from an unsafe request 
+FAIL HTTP cache invalidates after a successful response from a PUT assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates after a successful response from a DELETE assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates after a successful response from an unknown method assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Location URL after a successful response from a POST assert_equals: Response used expected 3 but got 1
+PASS HTTP cache does not invalidate Location URL after a failed response from an unsafe request 
+FAIL HTTP cache invalidates Location URL after a successful response from a PUT assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Location URL after a successful response from a DELETE assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Location URL after a successful response from an unknown method assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Content-Location URL after a successful response from a POST assert_equals: Response used expected 3 but got 1
+PASS HTTP cache does not invalidate Content-Location URL after a failed response from an unsafe request 
+FAIL HTTP cache invalidates Content-Location URL after a successful response from a PUT assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Content-Location URL after a successful response from a DELETE assert_equals: Response used expected 3 but got 1
+FAIL HTTP cache invalidates Content-Location URL after a successful response from an unknown method assert_equals: Response used expected 3 but got 1
+
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1importedw3cwebplatformtestsfetchhttpcachestatusexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt (0 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt                                (rev 0)
+++ trunk/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/fetch/http-cache/status-expected.txt        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+
+PASS HTTP cache goes to the network if it has a stale 200 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 200 response. 
+PASS HTTP cache goes to the network if it has a stale 203 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 203 response. 
+PASS HTTP cache goes to the network if it has a stale 204 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 204 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 299 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 299 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 400 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 400 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 404 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 404 response. 
+PASS HTTP cache goes to the network if it has a stale 410 response. 
+PASS HTTP cache avoids going to the network if it has a fresh 410 response. 
+PASS HTTP cache goes to the network if it has a stale 499 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 499 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 500 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 500 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 502 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 502 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 503 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 503 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 504 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 504 response. assert_less_than: Response used expected a number less than 2 but got 2
+PASS HTTP cache goes to the network if it has a stale 599 response. 
+FAIL HTTP cache avoids going to the network if it has a fresh 599 response. assert_less_than: Response used expected a number less than 2 but got 2
+
</ins></span></pre></div>
<a id="trunkLayoutTeststestsoptionsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/tests-options.json (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/tests-options.json        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/LayoutTests/tests-options.json        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -35,6 +35,9 @@
</span><span class="cx">     &quot;imported/w3c/web-platform-tests/IndexedDB/idbobjectstore_getKey.html&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span><ins>+    &quot;imported/w3c/web-platform-tests/IndexedDB/interleaved-cursors.html&quot;: [
+        &quot;slow&quot;
+    ],
</ins><span class="cx">     &quot;imported/w3c/web-platform-tests/IndexedDB/key-conversion-exceptions.htm&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span><span class="lines">@@ -44,6 +47,9 @@
</span><span class="cx">     &quot;imported/w3c/web-platform-tests/IndexedDB/keypath_maxsize.htm&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span><ins>+    &quot;imported/w3c/web-platform-tests/IndexedDB/parallel-cursors-upgrade.html&quot;: [
+        &quot;slow&quot;
+    ],
</ins><span class="cx">     &quot;imported/w3c/web-platform-tests/IndexedDB/writer-starvation.htm&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span><span class="lines">@@ -455,6 +461,18 @@
</span><span class="cx">     &quot;imported/w3c/web-platform-tests/fetch/api/request/request-keepalive-quota.html&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span><ins>+    &quot;imported/w3c/web-platform-tests/fetch/http-cache/cc-request.html&quot;: [
+        &quot;slow&quot;
+    ],
+    &quot;imported/w3c/web-platform-tests/fetch/http-cache/freshness.html&quot;: [
+        &quot;slow&quot;
+    ],
+    &quot;imported/w3c/web-platform-tests/fetch/http-cache/heuristic.html&quot;: [
+        &quot;slow&quot;
+    ],
+    &quot;imported/w3c/web-platform-tests/fetch/http-cache/partial.html&quot;: [
+        &quot;slow&quot;
+    ],
</ins><span class="cx">     &quot;imported/w3c/web-platform-tests/html/browsers/browsing-the-web/history-traversal/persisted-user-state-restoration/scroll-restoration-fragment-scrolling-cross-origin.html&quot;: [
</span><span class="cx">         &quot;slow&quot;
</span><span class="cx">     ],
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/Tools/ChangeLog        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2017-04-09  Youenn Fablet  &lt;youenn@apple.com&gt;
+
+        Resync WPT tests up to 23cd07d4685d81024b7440e042f8bbdb33e7ddec
+        https://bugs.webkit.org/show_bug.cgi?id=170647
+
+        Reviewed by Sam Weinig.
+
+        * Scripts/webkitpy/common/checkout/scm/git.py:
+        (Git.fetch): Fetching origin remote in case there is more than one.
+
</ins><span class="cx"> 2017-04-08  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Update CSSProperties.json with correct fill-and-stroke status, and other cleanup
</span></span></pre></div>
<a id="trunkToolsScriptswebkitpycommoncheckoutscmgitpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/common/checkout/scm/git.py (215163 => 215164)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/common/checkout/scm/git.py        2017-04-09 18:45:06 UTC (rev 215163)
+++ trunk/Tools/Scripts/webkitpy/common/checkout/scm/git.py        2017-04-09 18:49:22 UTC (rev 215164)
</span><span class="lines">@@ -581,8 +581,8 @@
</span><span class="cx">     def files_changed_summary_for_commit(self, commit_id):
</span><span class="cx">         return self._run_git(['diff-tree', '--shortstat', '--no-renames', '--no-commit-id', commit_id])
</span><span class="cx"> 
</span><del>-    def fetch(self):
-        return self._run_git(['fetch'])
</del><ins>+    def fetch(self, remote='origin'):
+        return self._run_git(['fetch', remote])
</ins><span class="cx"> 
</span><span class="cx">     def checkout(self, revision, quiet=None):
</span><span class="cx">         command = ['checkout', revision]
</span></span></pre>
</div>
</div>

</body>
</html>